Yii 2命名空间丢失了吗?

时间:2015-03-18 09:43:51

标签: php yii

我在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();

6 个答案:

答案 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;