在调用新创建的控制器功能时,它导航到404错误页面

时间:2017-07-03 11:17:25

标签: php yii2

在yii2高级模板站点控制器

工作正常。在新控制器中调用函数时,它将导航到404错误页面。

我使用模型生成器创建模型并为模型创建原型。

这是我的控制器

 namespace backend\Controllers;

    use Yii;
    use common\models\PackageTable;
    use common\models\PackageTableSearch;
    use yii\web\Controller;
    use yii\web\NotFoundHttpException;
    use yii\filters\VerbFilter;

    /**
     * PackageTableController implements the CRUD actions for PackageTable model.
     */
    class PackageTableController extends Controller
    {
        /**
         * @inheritdoc
         */
        public function behaviors()
        {
            return [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'delete' => ['POST'],
                    ],
                ],
            ];
        }

        /**
         * Lists all PackageTable models.
         * @return mixed
         */
        public function actionIndex()
        {
            $searchModel = new PackageTableSearch();
            $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

            return $this->render('index', [
                'searchModel' => $searchModel,
                'dataProvider' => $dataProvider,
            ]);
        }

        /**
         * Displays a single PackageTable model.
         * @param integer $id
         * @return mixed
         */
        public function actionView($id)
        {
            return $this->render('view', [
                'model' => $this->findModel($id),
            ]);
        }

        /**
         * Creates a new PackageTable model.
         * If creation is successful, the browser will be redirected to the 'view' page.
         * @return mixed
         */
        public function actionCreate()
        {
            $model = new PackageTable();

            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->package_id]);
            } else {
                return $this->render('create', [
                    'model' => $model,
                ]);
            }
        }

        /**
         * Updates an existing PackageTable model.
         * If update is successful, the browser will be redirected to the 'view' page.
         * @param integer $id
         * @return mixed
         */
        public function actionUpdate($id)
        {
            $model = $this->findModel($id);

            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->package_id]);
            } else {
                return $this->render('update', [
                    'model' => $model,
                ]);
            }
        }

        /**
         * Deletes an existing PackageTable model.
         * If deletion is successful, the browser will be redirected to the 'index' page.
         * @param integer $id
         * @return mixed
         */
        public function actionDelete($id)
        {
            $this->findModel($id)->delete();

            return $this->redirect(['index']);
        }

        /**
         * Finds the PackageTable model based on its primary key value.
         * If the model is not found, a 404 HTTP exception will be thrown.
         * @param integer $id
         * @return PackageTable the loaded model
         * @throws NotFoundHttpException if the model cannot be found
         */
        protected function findModel($id)
        {
            if (($model = PackageTable::findOne($id)) !== null) {
                return $model;
            } else {
                throw new NotFoundHttpException('The requested page does not exist.');
            }
        }
    }

这是我的模特

    <?php

namespace common\models;

use Yii;

/**
 * This is the model class for table "package_table".
 *
 * @property integer $package_id
 * @property string $package_name
 * @property string $description
 * @property integer $amount
 * @property integer $status
 * @property string $created_on
 * @property string $updated_on
 */
class PackageTable extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'package_table';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['package_name', 'description', 'amount', 'status'], 'required'],
            [['description'], 'string'],
            [['amount', 'status'], 'integer'],
            [['created_on', 'updated_on'], 'safe'],
            [['package_name'], 'string', 'max' => 250],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'package_id' => 'Package ID',
            'package_name' => 'Package Name',
            'description' => 'Description',
            'amount' => 'Amount',
            'status' => 'Status',
            'created_on' => 'Created On',
            'updated_on' => 'Updated On',
        ];
    }
}

这是我的模特搜索

 <?php

namespace common\models;

use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\PackageTable;

/**
 * PackageTableSearch represents the model behind the search form about `common\models\PackageTable`.
 */
class PackageTableSearch extends PackageTable
{
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['package_id', 'amount', 'status'], 'integer'],
            [['package_name', 'description', 'created_on', 'updated_on'], 'safe'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

    /**
     * Creates data provider instance with search query applied
     *
     * @param array $params
     *
     * @return ActiveDataProvider
     */
    public function search($params)
    {
        $query = PackageTable::find();

        // add conditions that should always apply here

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        $this->load($params);

        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }

        // grid filtering conditions
        $query->andFilterWhere([
            'package_id' => $this->package_id,
            'amount' => $this->amount,
            'status' => $this->status,
            'created_on' => $this->created_on,
            'updated_on' => $this->updated_on,
        ]);

        $query->andFilterWhere(['like', 'package_name', $this->package_name])
            ->andFilterWhere(['like', 'description', $this->description]);

        return $dataProvider;
    }
}

1 个答案:

答案 0 :(得分:0)

尽管php命名空间不区分大小写,但您的情况下的自动加载器可能区分大小写。

在控制器命名空间的顶部提到

    N2
    |
N3----N1----N4
    |
    N5----N6

但在高级模板中,所有目录都是小写的。因此,请尝试将此行更改为

 namespace backend/Controllers;