رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل NameSpace ها در Yii 2
#1
سلام.

من میخوام تمام اطلاعات دیتابیس رو با findAll بگیرم . اما توی NameSpace ها به ارور بر میخورم.مشکل چیه؟

کدهای مربوط به Controller :

<?php
namespace frontendcontrollers;
namespace frontendmodels;
use yiiwebController;
use frontendmodelsUsers;

class UsaController extends Controller{
   
   public function actionIndex(){
       
    $Posts=Users::model()-> findAll();
     return $this->render('index',  compact('Posts'));
       
   }

}

کد مربوط به View :

<?php
var_dump($Posts);
?>

کد Model رو هم با gii ایجاد کردم:

<?php

namespace appmodels;

use Yii;

/**
* This is the model class for table "users".
*
* @property integer $id
* @property string $name
* @property string $username
*/
class Users extends yiidbActiveRecord
{
   /**
    * @inheritdoc
    */
   public static function tableName()
   {
       return 'users';
   }

   /**
    * @inheritdoc
    */
   public function rules()
   {
       return [
           [['name', 'username'], 'required'],
           [['name', 'username'], 'string', 'max' => 255]
       ];
   }

   /**
    * @inheritdoc
    */
   public function attributeLabels()
   {
       return [
            'id' => 'ID',
            'name' => 'Name',
            'username' => 'Username',
        ];
   }

   /**
    * @inheritdoc
    * @return UsersQuery the active query used by this AR class.
    */
   public static function find()
   {
       return new UsersQuery(get_called_class());
   }
}

به این صورت لینک رو اجرا میکنم:

http://localhost:81/Yii2_advanced/frontend/web/index.php?r=usa/index
این هم اروری که نشون میده:

نقل قول:
Unknown Class – yiibaseUnknownClassException

Unable to find 'frontendcontrollersUsaController' in file: C:xampphtdocsYii2_advanced/frontend/controllers/UsaController.php. Namespace missing?
پاسخ
تشکر شده توسط:
#2
namespace دوم رو داخل کلاس کنترلر حذف کنید.
<?php
namespace frontendcontrollers;

use Yii;
use yiiwebController;
use appmodelsUsers;
 
class UsaController extends Controller
{
    public function actionIndex()
    {
        $Posts = Users::findAll();
        return $this->render('index',  compact('Posts'));
    }
}
پاسخ
تشکر شده توسط: cloner
#3
باز هم ارور میده :

نقل قول:
Unknown Class – yiibaseUnknownClassException
Unable to find 'frontendmodelsUsers' in file: C:xampphtdocsYii2_advanced/frontend/models/Users.php. Namespace missing?
پاسخ
تشکر شده توسط:
#4
اول همه use ها بگذارین. مثال:
use appmodelsUsers;

ضمناً وقتی فضای نام شما توی مدل appmodels هست، توی کنترلر هم باید از همین استفاده کنید (مثل کد بالا که گذاشتم).
پاسخ
تشکر شده توسط:
#5
من دقیقا همون کد هایی که شما توی پست قبلی دادین رو تست کردم نمیدونم چرا ارور میده.

بک اسلش هم گذاشتم درست نشد . همون ارور قبلی رو میده .

Unable to find 'frontendmodelsUsers' in file: C:xampphtdocsYii2_advanced/frontend/models/Users.php. Namespace missing?
پاسخ
تشکر شده توسط:
#6
ظاهرا توی اتصال به دیتابیس مشکل داره.

چون الان بصورت زیر مشکلی نداره:

<?php
namespace frontendcontrollers;

use yiiwebController;
use frontendmodelsUsers;

class UsaController extends Controller{
    
    public function actionIndex(){
        
    // $Posts=Users::model()-> findAll();
        $Posts='test1';
      return $this->render('index',  compact('Posts'));
        
    }

}
پاسخ
تشکر شده توسط:
#7
دوست عزیز، چرا از متد model استفاده میکنید؟ توی Yii2 این مدلی نیست. باید بنویسید:
Users::findAll();

ضمناً اگه از معماری advanced استفاده میکنید، توی مدلتون namespace رو اصلاح کنید و بجای app همون frontend رو بنویسید.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان