Symfony1 Symfony管理生成器条令执行器创建
感谢您在这方面的帮助,我对Symfony框架非常陌生,所以我只是想了解一下 我想能够截获从管理区提交的表格,并修改数据 以下是我到目前为止得到的(基本形式) /apps/backend/modules/position/actions/action.class.phpSymfony1 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) {
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()比显式使用名称要好。