【问题标题】:Symfony admin generator-- a button for save and back to listSymfony 管理生成器——保存和返回列表的按钮
【发布时间】:2011-12-08 10:34:01
【问题描述】:

如何在视图中添加保存并返回列表按钮以创建新记录?一般来说,我想要更多按钮,所以我正在寻找一个通用的答案。

编辑:默认生成器为我提供了两个按钮:

  1. 保存
  2. 保存并添加

我想要一个saves and takes me back to the list 的按钮。而且我还想要一个带有自定义操作的自定义按钮。

让我解释一下实际情况:

我有一个列表操作create,它将我带到一个包含一些输入字段的表单。现在我想使用这些字段的数据制作图像。我想将此图像显示为表单右侧的预览。为此,我需要一个预览按钮,以便每当按下时,它都会将数据提交给自己以进行预览和进一步修改。

我希望现在更清楚了。

【问题讨论】:

  • 您能更好地解释您的问题吗? 保存返回列表按钮在表单中默认启用。您想在哪里插入更多按钮?您还需要具有自定义操作的按钮吗?
  • @macgyver:我已经更新了问题。

标签: php symfony1 symfony-forms symfony-1.4 admin-generator


【解决方案1】:

您必须首先添加generator.yml 您的save_and_back_to_list 和其他自定义my_other_action 操作:

    config:
      actions: ~
      fields:  ~
      list:    ~
      filter:  ~
      form:    ~
      edit:
        actions:
          _save: ~
          _list: ~
          save_and_back_to_list: ~
          my_other_action: ~
      new:
        actions:
          _save: ~
          _save_and_add: ~
          _list: ~
          save_and_back_to_list: ~
          my_other_action: ~

然后你必须添加你自定义的帮助函数来在/apps/myapplication/modules/mymodule/lib/mymoduleGeneratorHelper.class.php中创建你的按钮

  public function linkToSaveAndBackToList($object, $params)
  {
    return '<li class="sf_admin_action_save_and_back_to_list"><input type="submit" value="'.__($params['label'], array(), 'sf_admin').'" name="save_and_back_to_list" /></li>';
  }

  public function linkToMyOtherAction($object, $params)
  {
    return '<li class="sf_admin_action_my_other_action"><input type="submit" value="'.__($params['label'], array(), 'sf_admin').'" name="my_other_action" /></li>';
  }

现在您会在NewEdit 表单中获得两个提交按钮。

最后,您必须重写函数processForm(sfWebRequest $request, sfForm $form),您可以在/cache/dev/modules/autoMymodule/actions/actions.class.php 中找到该函数,以管理您的新提交操作。我猜你的 create 函数会覆盖管理员生成器。

我希望我不会忘记什么。

【讨论】:

  • 实际上我的create 并没有覆盖默认值,我会将名称更改为其他名称。但我明白了。
  • 管理生成器提供的动作以下划线开头,但不在动作类中。我猜想这个 Symfony 规则的目的是与用户操作分离。
  • 我想我应该把它作为一个单独的问题。我的实际情况:stackoverflow.com/questions/8445441/…
  • 另外,当我查找/mymodule/new 的来源时,我看到表单的提交操作是/mymodule,而不是Jobeet 教程中的/mymodule/create .如果是这样,那么它最终如何调用executeCreate
  • 好问题!我猜如果未指定表单操作,路由系统会切换到为发布请求创建操作。我不知道这个选择的原因。
猜你喜欢
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多