Model view controller 需要了解如何编写我的zend view助手的帮助吗

Model view controller 需要了解如何编写我的zend view助手的帮助吗,model-view-controller,zend-framework,zend-view,view-helpers,Model View Controller,Zend Framework,Zend View,View Helpers,一般来说,我对Zend框架和MVC是相当陌生的,所以我正在寻求一些建议。我们有一个基本的控制器类,其中我们有一些方法来获取一些用户信息、帐户配置等 因此,我正在使用其中的一些方法来编写各种控制器操作中的代码,但现在我希望避免重复此代码,而且我希望将此代码带到控制器之外的视图帮助器中,因为它主要用于输出一些JavaScript。控制器中的代码如下所示: $obj= new SomeModel ( $this->_getModelConfig () ); $states = $obj->

一般来说,我对Zend框架和MVC是相当陌生的,所以我正在寻求一些建议。我们有一个基本的控制器类,其中我们有一些方法来获取一些用户信息、帐户配置等

因此,我正在使用其中的一些方法来编写各种控制器操作中的代码,但现在我希望避免重复此代码,而且我希望将此代码带到控制器之外的视图帮助器中,因为它主要用于输出一些JavaScript。控制器中的代码如下所示:

$obj= new SomeModel ( $this->_getModelConfig () );
$states = $obj->fetchByUser ( $this->user->getId() );
//Fair amount of logic here using this result to prepare some javascript that should be sent to the view...
$this->\u getModelConfig和$this->user->getId()是我可以在控制器中执行的操作,现在我的问题是,一旦我将这些代码移出控制器,将这些信息传递给视图帮助器的最佳方式是什么

我是否应该在控制器中调用这些方法并将结果存储到视图中,然后让助手从那里拾取结果

我考虑的另一个选项是向助手添加一些参数,如果传递了这些参数,那么我将它们存储在助手的属性中并返回,当调用这些参数而不传递参数时,它将执行工作。所以看起来是这样的:

$obj= new SomeModel ( $this->_getModelConfig () );
$states = $obj->fetchByUser ( $this->user->getId() );
//Fair amount of logic here using this result to prepare some javascript that should be sent to the view...
从控制器:

$this->view->myHelper($this->user->getId(), $this->_getModelConfig());
从视图:

<?= $this->myHelper(); %>

欢迎任何意见

首先,“$this->myHelper();%>”处的ASP风格结束标记是一种不好的做法,也就是说,更可取的做法是将逻辑保留在模型中,而控制器仅用于调用模型,获取结果并将其提交给视图查看

我要做的是,如果我只是想将一组值传递给视图,我会将它们填充到关联数组中并发送过来

无论如何,你不应该做你的

“//这里有相当多的逻辑使用此结果准备一些应发送到视图的javascript…”


作为控制器的一部分,我建议您创建一个新的模型,该模型为您提供逻辑功能,您只需在控制器中调用您的模型,将所需的任何参数传递给它,然后将结果发送给视图。

首先,ASP样式的结尾标记在“$this->myHelper();%>”处是一个糟糕的做法,因此,更可取的做法是将逻辑保留在模型中,控制器仅用于调用模型,获取结果并将其吐到视图中进行查看

我要做的是,如果我只是想将一组值传递给视图,我会将它们填充到关联数组中并发送过来

无论如何,你不应该做你的

“//这里有相当多的逻辑使用此结果准备一些应发送到视图的javascript…”


作为控制器的一部分,我建议您创建一个新模型,为您提供逻辑功能,您只需在控制器中调用您的模型,将所需的任何参数传递给它,然后将结果传递给视图。

最好的方法是通过控制器从模型中获取数据,然后传递给视图。但是,如果您确实需要一个自定义帮助器来响应视图部分,我们只会知道您是否准确地说出了要执行的操作

如果助手中已有此逻辑,请尝试在视图myhelper($this->params);?>

您可能也想看看这种方法:

// In your view to put javascript in the header
// You can loop trought your data and then use it to generate the javascript.
<?php $this->headScript()->captureStart(); ?>
    $().ready(function(){
        $('#slideshow').cycle({ 
            fx:     'fade', 
            speed:  1000, 
            timeout: 6500, 
            pager:  '#nav'
        });
    });
<?php $this->headScript()->captureEnd() ?>  
//在视图中,将javascript放在标题中
//您可以循环trought数据,然后使用它生成javascript。
$().ready(函数()){
$('#幻灯片放映')。循环({
外汇:“淡出”,
速度:1000,
超时:6500,
寻呼机:“#导航”
});
});

最好的方法是通过控制器从模型中获取数据,然后传递到视图。但是,如果您确实需要一个自定义帮助器来响应视图部分,我们只会知道您是否准确地说出了要执行的操作

如果助手中已有此逻辑,请尝试在视图myhelper($this->params);?>

您可能也想看看这种方法:

// In your view to put javascript in the header
// You can loop trought your data and then use it to generate the javascript.
<?php $this->headScript()->captureStart(); ?>
    $().ready(function(){
        $('#slideshow').cycle({ 
            fx:     'fade', 
            speed:  1000, 
            timeout: 6500, 
            pager:  '#nav'
        });
    });
<?php $this->headScript()->captureEnd() ?>  
//在视图中,将javascript放在标题中
//您可以循环trought数据,然后使用它生成javascript。
$().ready(函数()){
$('#幻灯片放映')。循环({
外汇:“淡出”,
速度:1000,
超时:6500,
寻呼机:“#导航”
});
});

我的问题正是要将该代码从控制器中取出。我不想做的事情是让我的模型输出标签包含它不属于那里的JS文件,所以我认为解决方案是使用一个助手。“相当数量的逻辑”主要是从模型接收到的数组中的几个循环,并输出适当的javascript,我真的觉得这不属于模型,是吗?我的问题就是将代码从控制器中取出。我不想做的事情是让我的模型输出标签包含它不属于那里的JS文件,所以我认为解决方案是使用一个助手。“相当数量的逻辑”主要是从模型接收到的数组中的几个循环,并输出适当的javascript,我真的觉得这不属于模型,是吗?