如何实现mvc+;php工作中的smarty?

如何实现mvc+;php工作中的smarty?,php,model-view-controller,smarty,Php,Model View Controller,Smarty,这是一个用于构建菜单的处理程序 新菜单项('Owner',lang('Owner'),汇编_url('Owner'),获取_image_url('navigation/Company.gif')), 新菜单项('Client',lang('Client'),汇编_url('Client'),获取_image_url('navigation/people.gif')) 一个系统模块类,我在其中映射了路线 $router->map('Owner', 'Owner','null', array(

这是一个用于构建菜单的处理程序

新菜单项('Owner',lang('Owner'),汇编_url('Owner'),获取_image_url('navigation/Company.gif')), 新菜单项('Client',lang('Client'),汇编_url('Client'),获取_image_url('navigation/people.gif'))

一个系统模块类,我在其中映射了路线

$router->map('Owner', 'Owner','null', array('controller' => 'companies', 'action' => 'index_owner'));
  $router->map('Client', 'Client','null', array('controller' => 'companies', 'action' => 'index_client'));
它调用控制器类,在该类中使用名称index\u client、index\u owner定义方法…这两个方法具有相同的代码

function index_client(){
      if(Company::canAdd($this->logged_user)) {
   $this->wireframe->addPageAction(lang('New Company'), assemble_url('people_companies_add_client'));
  } // if 
  if($this->request->isApiCall()) {
    $this->serveData(Companies::findByIds($this->logged_user->visibleCompanyIds()), 'companies');
  } else {
    $page = (integer) $this->request->get('page');
    if($page < 1) {
      $page = 1;
    } // if  

    list($companies, $pagination) = Companies::paginateActive($this->logged_user, $page, 30);

   $this->smarty->assign(array(
     'companies' => $companies,
      'pagination' => $pagination,
    ));
  } // if
} // index   */          
功能索引\u客户端(){
if(公司::canAdd($this->logged_user)){
$this->wireframe->addPageAction(lang(“新公司”)、assembly_url(“人、公司、添加客户”);
}//如果
如果($this->request->isApiCall()){
$this->serveData(companys::findByIds($this->logged_user->visibleCompanyIds()),'companys');
}否则{
$page=(整数)$this->request->get('page');
如果($page<1){
$page=1;
}//如果
列表($companys,$pagination)=companys::paginateActive($this->logged_user,$page,30);
$this->smarty->assign(数组)(
“公司”=>美元公司,
“分页”=>$pagination,
));
}//如果
}//索引*/
inturn称之为名为index_owner的smarty模板为index_client。
我希望只调用一个模板,即“索引”,因为显示的是相同的内容,所以只选中模板中的一个标志“is_owner”,并根据该标志完成公司的显示。请告诉我处理程序、控制器、模块、视图的流程如何

必须将方法魔法常量分配给smarty资源。 完成此操作后,如果设置了此属性,请自定义Smarty::fetch方法以捕获和渲染

如果您已经使用url重写,并且方法名已写入url。你可以通过Smarty来实现这一点


此功能是zend framework mvc实现中固有的。检查此项。

这在很大程度上取决于您的结构,但您可能需要一个处理程序(例如index.php)来处理所有请求并在控制器和视图上调用适当的函数-您需要检查是您的路由器调用视图还是控制器。你能提供更多关于你的结构的信息吗?同意。传统的MVC控制器(Zend框架)内置了所有这些幕后功能。在您的例子中,您需要设计如何显示(“template.tpl”)将被调用。这将完全取决于运行时环境的设置方式,而与PHP固有的处理方式无关。