至于最佳做法,走的是这个建议?我有一个需要在项目和型材控制器被称为意见控制器+模型。评论控制器自动加载评论模型

是否可以接受直接从项目和简档控制器调用评论控制器,或者是“最佳实践”方法来调用评价模型代替?

我问,因为在Kohana中,视图是不是一个单独的类,所以如果我是调用另一个控制器我结束了两个视图中的控制器。在另一方面,如果我只需要调用模型,就不会有项目和型材控制器内重复的代码。

所有你MVC高手帮忙! =)

有帮助吗?

解决方案

一般情况下,我会去的“胖型”的方式。

我不知道什么样的代码你真的很担心重复。

有几个方法,你可以这样做:

首先方式: - 审问你的评论模型返回一些意见。 - 通过评论数据到您的视图。 - 渲染的评论在视图中,可能使用一些视图助手

方式二: - 要知道,我们没有理由你的看法不能直接跟你的模型。 - 写,抓住它需要直接从模型中的数据的视图助手,并使得它

我喜欢第二个方式。有些人让他们的视图层聊到模型中的问题(以只读方式!),但我不是其中之一。

其他提示

如果您使用的Kohana 3,可以受益于HMVC特征。可以控制器内执行的控制器。

http://forum.kohanaphp.com/comments.php?DiscussionID=2768

检查上述链路的一些例子

我会说这取决于你的控制器返回。

如果您的控制器可以返回的DTO /型号,然后确定,调用一个控制器是一个好主意。

您控制器定义了一个严格的,记录在案,并希望稳定的切入点,以你的功能。因此,可以完全地忽略评论的实施,或随意改变它,只要你不改变控制器方法的签名。

不过,如果你的控制器是无法返回原始数据,那么它肯定prolematic,因为你得到回报的HTML(或其他标记)。这意味着,你必须直接HTML到你想要的视图管,或从中提取数据。这两个的是一个好主意。

配管中的原始HTML意味着,如果你改变注释的视图,的资料模块上的评论的显示将不可避免地发生变化。这可能是你想要什么,但我会去的灵活性。

现在,如果你想要的数据,你必须从您的视图返回的标记,这是沉重而适得其反提取数据。

如果你想调用静态方法,你可以直接调用该函数。例如:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top