Если вы определили дополнительные поля в generator.yml
, вы можете переопределить одно из действий генератора администратора, чтобы обрабатывать поля так, как вы хотите.
Посмотрите на сгенерированный actions.class.php в кэше / YOURAPP / YOURENV / modules / autoYOURMODULE / actions / actions.class.php . Вы можете переопределить любую из этих функций своими собственными в apps / YOURAPP / modules / YOURMODULE / actions / actions.class.php , поскольку она наследуется из этого кэшированного файла. Когда вы вносите изменения в generator.conf , кэшированный файл обновляется, но ваш код все равно переопределяет его. Вы, вероятно, хотите переопределить processForm()
.
У меня есть пример этого на шаге 5 в этом сообщении в блоге :
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$notice = $form->getObject()->isNew() ? 'The item was created successfully.' : 'The item was updated successfully.';
// NEW: deal with tags
if ($form->getValue('remove_tags')) {
foreach (preg_split('/\s*,\s*/', $form->getValue('remove_tags')) as $tag) {
$form->getObject()->removeTag($tag);
}
}
if ($form->getValue('new_tags')) {
foreach (preg_split('/\s*,\s*/', $form->getValue('new_tags')) as $tag) {
// sorry, it would be better to not hard-code this string
if ($tag == 'Add tags with commas') continue;
$form->getObject()->addTag($tag);
}
}
try {
$complaint = $form->save();
// and the remainder is just pasted from the generated actions file
Когда я понял, что могу прочитать сгенерированные файлы в кэше, чтобы точно узнать, что делает генератор администратора, и что я могу переопределить любую их часть, это сделало меня намного более продуктивным с генератором администратора.