2012-02-07 84 views
1

我創建一個CakePHP的助手從表單助手延伸:測試的CakePHP 2.0.5助手延伸表單助手

App::uses('FormHelper', 'View/Helper'); 
class MyFormHelper extends FormHelper{ 
    public function wysiwyg($fieldName, $options = array()){ 
     return parent::textarea('Model.field'); 
    } 
} 

這裏是我的測試用例:

App::uses('Controller', 'Controller'); 
App::uses('View', 'View'); 
App::uses('MyFormHelper', 'View/Helper'); 

class MyFormHelperTest extends CakeTestCase { 
    public $helper = null; 

    public function setUp() { 
     parent::setUp(); 
     $Controller = new Controller(); 
     $View = new View($Controller); 
     $this->helper = new MyFormHelper($View); 
    } 


    public function testWysiwyg() { 
     $result = $this->helper->wysiwyg('Model.field'); 
     $expected = array(
      'textarea' => array('name' => 'data[Model][field]', 'id' => 'ModelField'), 
      '/textarea', 
     ); 
     $this->assertTags($result, $expected); 
    } 
} 

當我運行測試,我有PHPUNIT_FRAMEWORK_ERROR_NOTICE

Trying to get property of non-object 

我知道,這個問題是來自我的幫助:

return parent::textarea('Model.field'); 

我不知道如何解決這個問題。

感謝提前:)

+0

是否有一個具體的原因,你想擴大Ca ke的'FormHelper'而不是'AppHelper',手冊中提到的標準方法? http://book.cakephp.org/2.0/en/views/helpers.html#creating-helpers – mensch 2012-02-08 15:17:46

+0

爲了使生成的html適應我的網頁設計,我擴展了FormHelper。 (添加類,在輸入之前添加div,...) – user1195760 2012-02-08 19:50:02

回答

0

要在蛋糕重寫的HtmlHelper方法2.0,你可以簡單地說:

創建包含例如link方法,其中extends HtmlHelper,你OwnHelperAppController註明:

$helpers = array('Html' => array('className' => 'OwnHelper')); 

via ADmad