我在Yii 2中有一个名称空间缺失问题。我安装了高级应用程序。我从我的前端控制器引用后端模型。下面是我的后端模型,前端控制器和错误消息的代码片段。
错误
无法在文件中找到'backend \ models \ PaymentsMethod \ TermsAndConditions':C:\ inetpub \ wwwroot \ jobmanager / backend / models / PaymentsMethod / TermsAndConditions.php。命名空间丢失了吗?
后端型号
namespace app\models\PaymentsMethod;
use Yii;
class TermsAndConditions extends \yii\db\ActiveRecord
{
前端模型
public function actionCreate()
{
$model = new estimate();
$tnc = new \backend\models\PaymentsMethod\TermsAndConditions();
答案 0 :(得分:3)
我已经解决了我的问题。我试图从前端控制器访问后端模型类。我通过将后端模型类移动到公共文件夹来解决这个问题,从那里我可以从后端和前端引用它。
谢谢
答案 1 :(得分:1)
在您的前端,首先包含命名空间,然后实例化:
use app\models\PaymentsMethod\TermsAndConditions;
$tnc = new TermsAndConditions();
OR
正如alfallouji所说,你可以直接使用:
$tnc = new \app\models\PaymentsMethod\TermsAndConditions();
答案 2 :(得分:0)
您使用此命名空间app\models\PaymentsMethod
定义了模型,然后您尝试实例化\backend\models\PaymentsMethod\TermsAndConditions
。
你应该在你的前端模型中这样做:
$tnc = new \app\models\PaymentsMethod\TermsAndConditions();
答案 3 :(得分:0)
命名空间声明语句必须是脚本中的第一个语句
123456789101112
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\users;
class UserController extends Controller{
public function actionIndex()
{
echo "working on .....";
答案 4 :(得分:0)
如果您要从前端访问,请使用 frontend 代替 app
即
namespace frontend\models\PaymentsMethod;
,如果您要从后端访问,请按以下方式使用
namespace backend\models\PaymentsMethod;
答案 5 :(得分:0)
将“后端”替换为“仅应用”型号搜索
例如:app \ models \ PaymentsMethod;