Symfony1 Symfony管理生成器条令执行器创建

Symfony1 Symfony管理生成器条令执行器创建,symfony1,doctrine,admin,symfony-1.4,Symfony1,Doctrine,Admin,Symfony 1.4,感谢您在这方面的帮助,我对Symfony框架非常陌生,所以我只是想了解一下 我想能够截获从管理区提交的表格,并修改数据 以下是我到目前为止得到的(基本形式) /apps/backend/modules/position/actions/action.class.php class propositionActions extends autoPropositionActions { public function executeCreate(sfWebRequest $request) {

感谢您在这方面的帮助,我对Symfony框架非常陌生,所以我只是想了解一下

我想能够截获从管理区提交的表格,并修改数据

以下是我到目前为止得到的(基本形式)

/apps/backend/modules/position/actions/action.class.php

class propositionActions extends autoPropositionActions {

  public function executeCreate(sfWebRequest $request) {
    // modify the name
    $name = $request->getParameter('name');
    $name = $name . ' is an idiot';
    $request->setParameter('name', $name);

    return parent::executeCreate($request);
  }

}
“我的表单”不包含名称字段:

/apps/backend/modules/proposition/config/generator.yml

generator:
  class: sfDoctrineGenerator
  param:
    model_class:           Proposition
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          proposition
    with_doctrine_route:   true
    actions_base_class:    sfActions

    config:
      actions: ~
      form:
        display: [name, icon, overview, published]
我不确定这是否是您需要查看的文件,但它肯定在HTML中:

<input type="text" id="proposition_name" name="proposition[name]">
当我提交表格时,它只保存我的名字。我想让它保存我的名字,在后面加上“是个白痴”


非常感谢

我认为您的思路是正确的,Peter,但是修改
$request
太晚了,无法产生任何效果

您可以在中对入站数据进行此类修改


或者,如果您需要进行特殊处理,那么重写生成的
processForm()
函数可能更有意义。只需将它从
cache/frontend/dev/modules/autoProposition/actions/actions.class.php
复制到你的
apps/backend/modules/proposition/actions/action.class.php
中,然后开始黑客攻击。

你为什么要这样做?我认为最合适的地方是形式本身

您可以通过添加update*column方法修改任意列的值:

class PropositionForm extends BasePropositionForm
{
  public function updateNameColumn($name)
  {
    return $name . ' is an idiot';
  }
}
注意:如果您不想在使用表单的其他位置附加“Isa a Idot”字符串,您可以对原始表单进行子类化,并在那里添加您的方法(即在AdminPropositionForm中)

通过在模块的配置类(propositionGeneratorConfiguration)中重载getFormClass()方法,可以更改管理生成模块使用的表单。它应该返回要使用的表单类的名称

注意2:您必须以不同的方式访问表单值:

$proposition = $request->getParameter('proposition', array());
$name = $proposition['name'];

谢谢Nathan,processForm()是我正在寻找的函数。我已经扩展了它,现在它可以正常工作了。我想知道autoPropositionActions类生活在哪里,看到这一点让我有了更多的机会:)什么样的语法会改变processform中字段的值?我正在尝试将author_id设置为当前登录用户的id…@Manu看起来您已经获得了帮助。祝你好运。谢谢库巴,你的第二张便条帮了忙。虽然我曾经扩展过processForm(),但我使用它的方式是:$parms=$request->getParameter($form->getName())$name=$parms['name']@彼得:你说得对。使用$form->getName()比显式使用名称要好。