2011-09-10 24 views
0

我想處理應用程序反饋,在這種情況下,表單驗證。 要做到這一點,我爲您在控制器模型驗證,使用對於所有表格,CakePHP SET error => false

// VALIDATE 
      if ($this->Event->validates($this->data)) 
      { 
       // SAVE 
        $this->Event->create(); 
        if ($this->Event->saveAll($this->data, array('validate' => false))) 
        { 
         $this->Session->setFlash('Evenimentul a fost salvat!', 'flash_admin_success'); 
         $this->redirect(array('action' => 'index', 'admin' => true)); 
        } else { 
         $this->Session->setFlash('Evenimentul nu a putut fi salvat. Va rugam sa incercati din nou!', 'flash_admin_error'); 
        } 
       //////// 
       $errors = 'O EROARE'; 
       $this->set(compact('errors')); 
      } 
      else 
      { 
       // GET ERRORS to display it nicely :) 
        $errors = $this->Event->invalidFields(); 
        $flash = ''; 
        foreach($errors as $error) 
        { 
         $flash .= $error."<br />"; 
        } 
        $this->Session->setFlash($flash, 'flash_admin_error'); 

      } 

我知道有使用「錯誤」 =>假擺脫表單字段錯誤的方式,但我想設置這樣的整個應用程序,從而適用於所有形式的所有領域。 它必須有一種設置物體本身的方式,如果有人會告訴我,我會很樂意。 Thaks很多!

+0

爲什麼這麼複雜?你似乎在這裏創造了大量的開銷......蛋糕已經涵蓋了開箱即用...... – mark

+0

我只是想自定義驗證錯誤printig - 要更清楚,我想在某個時候實現一個jQueryUI,所以這些錯誤會放入一個「花哨」的盒子裏。上面的代碼不是最終的。 Thx爲你的implide建議。我很確定,有很多情況下我會照你說的去做。隨着時間的推移,我希望能夠變得更有效率。如果你知道如何去做,我首先要問的是,我真的很感謝你! – Michael

回答

0

編輯:這不會真正禁用錯誤輸出,但會隱藏錯誤:轉到webroot/css/cake.generic.css將display:none添加到選擇器div.error-message。這是實現你想要的,我能想到的最簡單的方法。

+0

謝謝你的回答!我只是試圖按照你的建議設置_inputDefaults,但即使我沒有在視圖窗體中覆蓋它,它也沒有效果。如果它對你有用,也許我做錯了什麼,但我懷疑。如果你能想到另一種方式來做到這一點,我很感激! – Michael

+0

是的,我最終害怕我必須這樣做。非常感謝支持! – Michael

0

雖然它可能看起來像是一種極端的方法來覆蓋單個屬性,但您可以通過擴展核心FormHelper來實現此目的。這將允許你做出映範的original suggestion默認爲所有表單助手實例:

// app/views/helpers/app_form.php 
App::import('Helper', 'Time'); 
class AppFormHelper extends FormHelper { 

    public $_inputDefaults = array('error' => false); 

} 

我們用這個作爲,是在CakePHP的1.3,你將不得不使用「AppForm」整個應用程序中引用這個幫手從現在起(即$this->AppForm->input())。 CakePHP 2.0引入了輔助別名來克服這一點,但現在人們不得不求助於一些技巧來繼續使用「Form」。我發現的一篇博客文章顯示如何backport the functionality和另一個管理允許helper to do it本身。我個人使用下面沒有任何問題:

// app/views/app.php 
class AppView extends View { 

    function &_loadHelpers(&$loaded, $helpers, $parent = null) { 
     $return = parent::_loadHelpers($loaded, $helpers, $parent); 
     # rename App helpers (ie. AppHtml -> Html) 
     foreach ($return as $helperName => $helper) { 
      if (substr($helperName, 0, 3) === 'App') { 
       $newHelperName = substr($helperName, 3); 
       $return[$newHelperName] = $return[$helperName]; 
      } 
     } 
     # done 
     return $return; 
    } 

} 

要使用上述新創建的類,只需添加以下到您的AppController

// app/app_controller.php 
class AppController extends Controller { 

    public $helpers = array(/*...*/, 'AppForm'); 

    public $view = array('App'); 

} 
+0

非常感謝,Deizel!這比我需要的還要多,但是真的很好的信息!再次,thx爲您的時間! – Michael

相關問題