我有這樣的模式:變化動態validated_file_class symfony的1.4
Banner:
columns:
filename: string(255)
url: string(255)
position:
type: enum
values: [top, right]
default: right
這種形式:
class BannerForm extends BaseBannerForm
{
public function configure()
{
$this->widgetSchema['filename'] = new sfWidgetFormInputFileEditable(array(
'file_src' => $this->getObject()->getThumbURL(),
'is_image' => true,
'edit_mode' => $this->getObject()->exists()
));
$validated_file_class = $this->getObject()->position === 'right' ? 'bannerRightValidatedFile' : 'bannerTopValidatedFile';
$this->validatorSchema['filename'] = new sfValidatorFile(array(
'path' => sfConfig::get('sf_upload_dir'),
'mime_types' => 'web_images',
'validated_file_class' => $validated_file_class',
'required' => $this->getObject()->isNew()
));
}
}
我用不同的驗證類,因爲它裏面我incapsulate縮略圖操作,和橫幅的尺寸取決於它的位置領域。 問題是$ validated_file_class始終是bannerRightValidatedFile類。 我怎麼能做到這件事?
作爲一種替代解決方案,您可以將圖像調整大小放到'Banner'類的'preSave'或'postSave'方法中,並讓驗證器單獨離開@kirugan – 1ed 2013-03-11 18:16:08
@ 1ed是的,我可以,但我認爲它會導致錯誤代碼 – kirugan 2013-03-11 19:03:28
你爲什麼這麼想?我認爲它比下面提到的驗證程序更簡潔。 – 1ed 2013-03-11 19:09:27