【问题标题】:cakephp accessing view attributes/variables from within a helpercakephp 从帮助程序中访问视图属性/变量
【发布时间】:2011-04-01 07:57:47
【问题描述】:

是否有合理的方式来访问视图属性“passedArgs”(或任何类似的)

/* view */
$this->passedArgs

来自 Helper?

我很乐意自定义助手的 _construct() 或自定义 app_helper...但我不想在每次查看或使用时都将 $this->passedArgs 传递给助手。

【问题讨论】:

    标签: php cakephp views helpers


    【解决方案1】:

    蛋糕 3:

    $this->getView()->get('my_var');
    

    【讨论】:

      【解决方案2】:

      蛋糕 2.x 和 3.x

      您可以在_View 对象中查找您的变量:

      $this->_View->viewVars['foo'];
      

      蛋糕 1.x

      如果您从帮助程序中获取当前视图对象,您应该能够访问其传递的参数。

      class SomeHelper extends AppHelper {
        function __construct($settings = array()){
          $this->passedArgs = ClassRegistry::getObject('view')->passedArgs;
        }
      }
      

      蛋糕 1.2.x

      如果您从帮助程序中获取当前视图对象,您应该能够访问它的 viewVars。

      class SomeHelper extends AppHelper {
        function __construct($settings = array()){
          $this->viewVars = ClassRegistry::getObject('view')->viewVars;
        }
      }
      

      享受, 尼克

      【讨论】:

      • 对我来说,我需要从控制器获取视图变量集,所以它是:$this->viewVars = ClassRegistry::getObject('view')->viewVars; 这是一个数组,其键是提取和使用的变量的名称在渲染期间的视图中。
      • 在 CakePHP 2.x 中,您可以使用帮助程序的方法访问 viewVars:$this->_View->viewVars['var']
      • +1 表示 atomicguava 有效,而 ClassRegistry 不适合我。 (蛋糕 2.3 稳定)
      • 我选择将它放在 AppHelper::__construct() 上,以便我们所有的助手都可以使用它。
      【解决方案3】:

      您是否尝试过仅从 AppController 设置视图的值?

      class AppController extends Controller {
       function beforeFilter() {
        // other stuff
        $this->set( 'passed_args', $this->params['pass'] );
       }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-09-08
        • 2015-05-06
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多