[英]Call Model from custom component into Joomla 4 controller
我一直在 Joomla 4.2.5 工作,我需要将我的自定义组件从 Joomla 3 转换为 Joomla 4 兼容。 我正在尝试从我的自定义组件将 model 调用到 Joomla 用户 controller 文件中,但出现错误并且代码未执行。 我尝试了一些代码,但它不起作用。
Joomla 3 从自定义组件调用 model 到用户 controller 的代码:
UserController.php
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_mycomponent/models', 'MycomponentModel');
$model = JModelLegacy::getInstance('Mycomponent', 'MycomponentModel');
这是我的 model 文件代码
组件/Mycomponent/模型/mymodel.php
class MycomponentModelmycomponent extends JModelLegacy
{
public function somefunction(){
}
}
下面是我尝试将上述代码转换为 Joomla 4:
UserController.php
Use Joomla\CMS\MVC\Model\BaseDatabaseModel;
class UserController extends BaseController
{
public function login()
{
login functions....
BaseDatabaseModel::addIncludePath(JPATH_SITE .'/components/com_mycomponent/models');
$model = BaseDatabaseModel::getInstance('Mycomponent', 'MycomponentModel');
$model->myfunction($argument);
}
}
组件/Mycomponent/模型/mymodel.php
namespace Joomla\Component\mycomponent\Site\Model;
use Joomla\Registry\Registry;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Model\ListModel;
class IbousersModelIbousers extends ListModel
{
public function myfunction($argument){
}
}
但它不起作用,任何人都可以告诉我哪里出了问题,或者我如何从 Joomla 4 中的另一个组件调用 model?
在 Joomla4 中,您从 MVCFactory 获得 model。
所以相当于:
BaseDatabaseModel::addIncludePath(JPATH_SITE .'/components/com_mycomponent/models');
$model = BaseDatabaseModel::getInstance('Mycomponent', 'MycomponentModel');
将是:
$mvc = Factory::getApplication()->bootComponent('com_mycomponent')->getMVCFactory();
$model = $mvc->createModel('MycomponentModel', 'Site');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.