Я уже давно сталкиваюсь с этой проблемой, но Symfony всегда удивляет меня каким-то аккуратным кодом, о котором я не знал.
Я предполагаю, что вы используете sfPropelPlugin, довольно стандартно, если вы извлекаетекод, сгенерированный в кеше (примечание: этот код будет доступен после того, как вы попытаетесь открыть модуль из браузера, поэтому сначала попробуйте посмотреть на него, чтобы у нас не было проблем: P) вы можете увидеть что-то вроде:
cache/{application_name}(generally frontend or backend)/dev(enviromnemt)/autoModule_name( look here for the module)/
:
Папка action содержит файл action.class.php, который определяет все действия, сгенерированные генератором(executeNew, Edit, Create, Update и т. д.).Если вы посмотрите на реализацию executeNew и executeEdit, вы увидите, что они запрашивают конфигурацию для отображения фактической формы, вот пример:
public function executeNew(sfWebRequest $request)
{
$this->form = $this->configuration->getForm();
$this->PaymentOrder = $this->form->getObject();
}
Вариант конфигурации содержит экземпляр класса конфигурацииопределенный в папке lib, о которой я упоминал ранее.Этот класс настраивает форму в соответствии с потребностями объекта (как правило, путем установки нового экземпляра объекта).
Итак, возникает волшебство, классы, которые вы видите в вашем модуле, расширяются по сравнению с классами в кеше, поэтому с помощью чистой логики,если вы модифицируете метод getForm()
в папке main module / lib в соответствии с вашими потребностями, вам не придется взламывать формы, получая пользовательский оценщик там, где вы не должны.
Надеюсь, это поможет!