我正在用joomla 3开发一个组件,我对MVC框架并不熟悉。
该组件将管理我网站上的用户注册。 有3种不同类型的用户。 必须为每种类型显示自定义视图 - >每个用户的一个布局(Usertype1,Usertype2,Usertype3)。
关于注册,一些方法对于所有userType都是类似的,但有些是特定的(例如函数getForm())。
所以我认为最好的选择是为每个Usertype创建一个模型,然后使控制器中加载的模型适应URL中的布局:
public function display($cachable = false, $urlparams = false){
$view = $this->getView( 'registration');
$layout = $this->input->get('layout');
switch ($layout) {
case "userType1":
$view->setModel( $this->getModel( 'userType1' ), true );
$view->display();
break;
case "userType2":
$view->setModel( $this->getModel( 'userType2' ), true );
$view->display();
break;
case "userType3":
$view->setModel( $this->getModel( 'userType3' ), true );
$view->display();
break;
}
parent::display();
return $this;
}
此代码不起作用......您认为我做出了正确的选择吗?
答案 0 :(得分:0)
仅供参考,以下代码完美无缺:
在view.html.php
中 public function display($tpl = null)
{
$document = JFactory::getDocument();
$app = JFactory::getApplication();
$layout = $app->input->get('layout');
switch ($layout) {
case "UserType1":
$model = JModelLegacy::getInstance('userType1', 'ComponentModel');
break;
case "userType2":
$model = JModelLegacy::getInstance('userType2', 'ComponentModel');
break;
case "userType3":
$model = JModelLegacy::getInstance('userType3', 'ComponentModel');
break;
}
$this->form = $model->getForm();
//langage
$lang = JFactory::getLanguage();
$this->tag = $lang->getTag();
parent::display($tpl);
}
我唯一担心的是:我没有使用控制器,因此我不确定它是使用 MVC方法
的最干净方式