【问题标题】:symfony 1.4: creating "Copy" actionsymfony 1.4:创建“复制”动作
【发布时间】:2011-04-07 13:34:49
【问题描述】:

我需要为模型列表创建“复制”操作。它应该从某个模型中获取所有值,将它们填充到表单中,您可以只编辑几个字段,然后按“保存”它会创建新模型。目前我考虑合并 Edit 和 New 操作:

public function executeListCopy(sfWebRequest $request)
  {
  # EDIT
  # $this->offer = $this->getRoute()->getObject();
  # $this->form = $this->configuration->getForm($this->offer);

  # NEW
  # $this->form = $this->configuration->getForm();
  # $this->offer = $this->form->getObject();

  # COPY
  <..>
   }

编辑部分显示当我使用编辑按钮时交响乐运行的命令。
NEW 与编辑相同只是创建新模型。

我想到了这个:

$this->form = $this->configuration->getForm($this->getRoute()->getObject());
$this->job_offer = $this->form->getObject();

我失败了。这为表单提供了模型 ID,并且由于 id 是预定义的 - 它编辑,而不是创建模型。

我该怎么做?

【问题讨论】:

    标签: php symfony1 copy action models


    【解决方案1】:

    这是一个例子:

    //routing
    job:
      class: sfDoctrineRouteCollection
      options:
        model: Job
        module: job
        object_actions: {copy: get, updatecopy: post}
    

    创建 2 个动作(基于编辑和更新)

    class jobActions extends sfActions
    {
      public function executeCopy(sfWebRequest $request)
      {
        $this->form = new JobCopyForm($this->getRoute()->getObject());
    
        $this->setTemplate('copy');
      }
      public function executeUpdatecopy(sfWebRequest $request)
      {
        $this->form = new JobCopyForm($this->getRoute()->getObject());
    
        $this->processForm($request, $this->form);
    
        $this->setTemplate('copy');
      }
    }
    

    copySuccess 模板与editSuccess 相同,只是需要告诉表单将​​数据发送到哪里:

    <form action='<?php echo url_for('job_updatecopy', $form->getObject()) ?>' method='post'>
    

    创建和配置表单,覆盖doSave

    class JobCopyForm extends BaseJobForm
    {
      public function configure()
      {
      }
    
      public function doSave($conn = null)
      {
        //update object values from form values
        $this->updateObject();
        //clone object
        $job = $this->getObject()->copy();
        //save a clone
        $job->save();
    
      }
    }
    

    干杯!

    【讨论】:

    • 最后两个步骤有点偏离方向。我在成功模板中只能找到带有设置的导入以及模型在哪里覆盖表单?是 lib/form/addon 吗?如果是,以什么名义?我在 Docs 的任何地方都找不到这部分。
    • editSuccess 只包含一个表单部分。为了简单起见,我只是将form partial 的内容复制到了copySuccess 中。或者,例如,您可以创建一个 form_copy 部分,并将其包含在 copySuccess 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多