2012-07-11 66 views
3

我正在使用sfWidgetFormInputFileEditable小部件爲我的用戶上傳圖像。Symfony 1.4 sfWidgetFormInputFile可編輯自定義

我想看看是否有辦法改變它的工作方式是默認的。當用戶添加一個「新」對象時,我希望它顯示一個通用圖片,當它是「編輯」時,它可以顯示現有的圖片。我嘗試編寫一個PHP條件語句,但這不適用於我,因爲當它是「新」條目時,我無法將參數「getPicture1」拉出來,因爲它不存在。

我目前小部件:

$this->widgetSchema['picture1'] = new sfWidgetFormInputFileEditable(array(
    'label' => ' ', 
    'file_src' => '/uploads/car/'.$this->getObject()->getPicture1(), 
    'is_image' => true, 
    'edit_mode' => true, 
    'template' => '<div>%file%<br />%input%</div>', 
)); 

回答

3

你有兩個選擇(第二個是更容易)。

第一個選項:創建自己的sfWidgetFormInputFileEditable並擴展原來的。

在文件lib/widget/myWidgetFormInputFileEditable.class.php

class myWidgetFormInputFileEditable extends sfWidgetFormInputFileEditable 
{ 
    protected function getFileAsTag($attributes) 
    { 
    if ($this->getOption('is_image')) 
    { 
     if (false !== $src = $this->getOption('file_src')) 
     { 
     // check if the given src is empty of image (like check if it has a .jpg at the end) 
     if ('/uploads/car/' === $src) 
     { 
      $src = '/uploads/car/default_image.jpg'; 
     } 
     $this->renderTag('img', array_merge(array('src' => $src), $attributes)) 
     } 
    } 
    else 
    { 
     return $this->getOption('file_src'); 
    } 
    } 
} 

然後你需要調用它:

$this->widgetSchema['picture1'] = new myWidgetFormInputFileEditable(array(
    'label'  => ' ', 
    'file_src' => '/uploads/car/'.$this->getObject()->getPicture1(), 
    'is_image' => true, 
    'edit_mode' => true, 
    'template' => '<div>%file%<br />%input%</div>', 
)); 

第二個選項:檢查如果對象是新的,然後使用默認圖像。

$file_src = $this->getObject()->getPicture1(); 
if ($this->getObject()->isNew()) 
{ 
    $file_src = 'default_image.jpg'; 
} 

$this->widgetSchema['picture1'] = new sfWidgetFormInputFileEditable(array(
    'label'  => ' ', 
    'file_src' => '/uploads/car/'.$file_src, 
    'is_image' => true, 
    'edit_mode' => true, 
    'template' => '<div>%file%<br />%input%</div>', 
)); 
+0

謝謝j0k !!你是一個拯救生命的人。第二個選項更多的是我要去的,但我沒有意識到你可以在form.class文件中寫入「if」語句。再次感謝! – djcloud23 2012-07-11 11:11:53