Создайте еще одну форму в папке / lib / form, которая расширяет вашу обычную форму, а затем переопределите соответствующее поле. Следующее удалит поле из формы, чтобы оно вообще не отображалось.
<?php
class FrontendSomeModelForm extends SomeModelForm {
public function configure()
{
unset($this["some_field"]);
}
}
Или, если вы хотите отобразить значение, но не разрешить его редактирование, вы можете сделать следующее:
<?php
class FrontendSomeModelForm extends SomeModelForm {
public function configure()
{
$this->setWidget("some_field", new sfWidgetFormPlain());
}
}
А затем создайте sfWidgetFormPlain
виджет, который просто выводит значение и прикрепляет его куда-нибудь, чтобы Symfony смог его найти (lib / form / widget или что-то еще).
<?php
class sfWidgetFormPlain extends sfWidgetForm
{
/**
* Constructor.
*
* @param array $options An array of options
* @param array $attributes An array of default HTML attributes
*
* @see sfWidgetForm
*/
protected function configure($options = array(), $attributes = array())
{
$this->addOption('value');
}
/**
* @param string $name The element name
* @param string $value The value displayed in this widget
* @param array $attributes An array of HTML attributes to be merged with the default HTML attributes
* @param array $errors An array of errors for the field
*
* @return string An HTML tag string
*
* @see sfWidgetForm
*/
public function render($name, $value = null, $attributes = array(), $errors = array())
{
//optional - for easy css styling
$attributes['class'] = 'plain';
return $this->renderContentTag('div', $value, $attributes);
}
}
Затем вы используете эту форму, а не обычную для той, которую вы не хотите редактировать. Обратитесь к документации Symfony, чтобы узнать, как это сделать, в зависимости от того, отображаете ли вы его в модуле или через генератор admin.