数据编辑


点击【编辑按钮】---这个在数据列表助手里面helperlist
   /**
     * Display edit action link
     */
    public function displayEditLink($token = null, $id, $name = null)
    {
        $tpl = $this->createTemplate('list_action_edit.tpl');
        if (!array_key_exists('Edit', self::$cache_lang))
            self::$cache_lang['Edit'] = $this->l('Edit', 'Helper');

        $tpl->assign(array(
            'href' => $this->currentIndex.'&'.$this->identifier.'='.
            $id.'&update'.$this->table.($this->page && $this->page > 1 ?
             '&page='.(int)$this->page : '').'&token='.($token != null ? $token : $this->token),
            'action' => self::$cache_lang['Edit'],
            'id' => $id
        ));

        return $tpl->fetch();
    }
    进入编辑页面
==============================

===第二步====
在后台控制器admincontroller
    /** @var string|false Object identifier inside the associated table */
    protected $identifier = false;  如:id_a9c
    
    构造器中赋值
    if (!$this->identifier) $this->identifier = 'id_'.$this->table;
    
    在后台页面控制器的构造器中赋值
     $this->table = 'a9c';
    
    
    
       initProcess();根据get或post过来的值,调用控制器中的相应方法进行处理。
                                                      如:增加,修改,删除,批量处理,导入导出等,有自己的规范????????
                                                      
                                                      elseif (isset($_GET['update'.$this->table]) && isset($_GET[$this->identifier]))
                                                      $this->display = 'edit';
                                                      


========第三部==
 
  initContent() ,

  if ($this->display == 'edit' || $this->display == 'add')
        {
            if (!$this->loadObject(true))
                return;
             // ddd("商品分类组合。。。。");
            $this->content .= $this->renderForm();    //* Function used to render the form for this controller
            进入商品编辑页面
            $this->fields_form = array(array('form' => $this->fields_form));


====第四部==================
            
            调用表格助手
            $helper = new HelperForm($this);
            $this->setHelperDisplay($helper);
            $form = $helper->generateForm($this->fields_form);
            其中,    /** @var array Edit form to be generated */
                       protected $fields_form;//在页面控制器设置参数                       
                       
                       
                       /** @var array of forms fields */
                     protected $fields_form = array();//这个是在HelperForm中定义的数组变量
                     
                     generate()方法中:
                     switch ($params['type'])
                    {
                        case 'categories':
                        
                        case 'file':
                        case 'color':
                        case 'date':
                        case 'textarea':
                        case 'shop11'://
                        case 'shop22'://
                        case 'shop' :
                        }
                        这里之前已经修改了助手,增加了shop11,shop22。其实最好是override 重写助手。
                        框架是支持的,但不必要特意的重构。
                        现在想法是以后修改到这些代码的时候,在进行refactor重构了,然后测试。
                        若以后的需求不用修改这些代码,那就直接用,不必一定重构。
                        这样,应该是一个比较现实的思考。
                        项目进度,代码可读性(维护),
                        代码性能,代码的灵活性(模块化)等要综合性的考虑。
                        
        ===第5步,模板=====
        helperform构造器 __construct中,指定smarty默认模板及路径
          $this->base_folder = 'helpers/form/';
          $this->base_tpl = 'form.tpl';                
          
          array(
                   'type' => 'text',
                    'label' => $this->l('会员编号'),
                    'name' => 'id_customer',
                    'required' => false,

                ),
          $input.type == 'hidden'   radio    shop   text tags   textbutton  swap  
                                   select    switch    textarea     checkbox      change-password   
                                   password   birthday  group  shop11   shop22  categories
                                   file  categories_select  asso_shop    color  date  datetime
                                   free   html
                                   
                                   {if isset($input.html_content)}
                                        {$input.html_content}
                                    {else}
                                        {$input.name}

                                    {/if}


===============后台编辑页面 start
--------------------------
        数据呈现
1.     相关控制器
2.     initcontent方法   编辑,添加 进入 renderform,查看 进入 renderview
3.     renderform  参数数组 ,相应字段 ,类型、标签 、名字
4.     调用上级 控制器相应的方法 ,
5.     生成 HelperForm对象
6.     此对象中的 方法 generateForm处理3中的参数
7.     generate具体处理,
8.    得到参数类型,(这个类型在哪里设置需要确定????????)
       这个参数与下面的模板对应
       /o2o/admin1568/themes/default/templatehelpers/helpers/form/form.tpl中
          {elseif $input.type == 'shop'}
                                    <span style="display:none">{$input.html}</span>

9.    在对应的类型后 ,可根据 名字加入区分要调用的功能函数(动作)
10.  功能函数 调用(商品分类,店铺,语言等,其中语言还需以后验证是否这样)的树形结构
11.  调用这个树形结构的render,设置树的参数,调用上级树
12.  用这个树形结构指定的模板中呈现数据
      
        数据绑定
1.     相关控制器的上级控制器中add,update方法中增加调用的方法名称
2.     该方法中调用 实体类中的方法 ,init()对要绑定的数据表进行设置,进行数据绑定
3.    12所指定的模板中相应所选框的名字

注: 编辑模板中的action与模板,hook之间的关系可以参考
       features中的form模板,中间测试用的<h1>标签
       目前给注释了,测试的时候可以打开
       这个hook可以认为是模板中的占位符号
===============end========


转载于:https://my.oschina.net/u/2615982/blog/611561

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值