我有一个简单的Yii2 REST应用程序。 参见:
如您所见,只有一个模型category
,只有一个控制器categorycontroller
类别
:
<?php
namespace api\models;
/**
* This is the model class for table "{{%category}}".
*
* @property int $id
* @property string $slug
* @property string $title
* @property int $enabled
*
*/
class Category extends \yii\db\ActiveRecord
{
/**
* {@inheritdoc}
*/
public static function tableName()
{
return '{{%category}}';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
['enabled', 'default', 'value' => 0],
[['title'], 'required'],
[['enabled'], 'integer'],
[['slug', 'title'], 'string', 'max' => 255],
[['slug'], 'unique'],
];
}
}
CategoryController
:
<?php
namespace api\controllers;
use yii\rest\ActiveController;
/**
* Class CategoryController
*
* @package api\controllers
*/
class CategoryController extends ActiveController
{
public $modelClass = 'api\models\Category';
}
然后我将把我的应用程序配置钉在这里:
config/main.php
<?php
$params = array_merge(
require __DIR__ . '/../../common/config/params.php',
require __DIR__ . '/../../common/config/params-local.php',
require __DIR__ . '/params.php',
require __DIR__ . '/params-local.php'
);
return [
'id' => 'app-api',
'basePath' => dirname(__DIR__),
'language' => 'ru-RU',
'bootstrap' => ['log'],
'controllerNamespace' => 'api\controllers',
'components' => [
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
'response' => [
'class' => 'yii\web\Response',
'format' => 'json'
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => 'category',
],
],
],
],
'params' => $params,
];
我是怎么经营的? 很简单。 只需借助web
目录中的$php-slocalhost:8900
即可。
但是当我访问URL:localhost:8900/categories
时,我看到以下内容:
{“名称”:“找不到”,“消息”:“找不到页。”,“代码”:0,“状态”:404,“类型”:“YII\Web\NotFoundHttpException”,“上一个”:{“名称”:“无效路由”,“消息”:“无法解析请求”Category/Index“。”,“代码”:0,“类型”:“YII\Base\InvalidRouteException”}}
什么意思? 我想Yii做了下面的东西。
/categories
请求(但由于某种原因,Yii无法执行此操作)“name”:“not found”,“message”:“page not found.”,“code”:0,“status”:404,“type”:“YII\\Web\\NotFoundHttpException”,
但是{“name”:“invalid route”,“message”:“无法解析请求”category/index“。”,“code”:0,“type”:“YII\\base\\InvalidRouteException”}
的原因我不知道。
这一切都是奇怪的行为。 我只是试着按照这个官方指南,我的配置有什么问题?
您需要在CategoryController
上指定索引方法。
即:
public function actionIndex()
{
return $this->render('index');
}
然后需要添加此方法的模板,或者