Yii2宁静不工作

时间:2014-12-31 10:02:30

标签: rest yii2

通过使用this link我尝试了一个安静的应用程序,但它不起作用并且总是返回此:

  

找不到对象!

     

在此服务器上找不到请求的URL。如果您手动输入了网址,请> >检查你的拼写,然后再试一次。

     

如果您认为这是服务器错误,请与网站管理员联系。   错误404   本地主机   Apache / 2.4.4(Win32)OpenSSL / 1.0.1e PHP / 5.5.1

我称之为:localhost/restful/web/users

修改

此类通话也无效:localhost/restful/web/?r=users

它返回了这个:

  

未找到(#404)   页面未找到。

     

Web服务器处理您的请求时发生了上述错误。

     

如果您认为这是服务器错误,请与我们联系。谢谢。

2 个答案:

答案 0 :(得分:1)

这是我的config/web.php

<?php

$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],

    'components' => [
        'urlManager'=>[
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
        ],
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'a',
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ],
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),
    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = 'yii\debug\Module';

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yii\gii\Module';
}

return $config;

控制器:

<?php

namespace app\controllers;

use yii\rest\ActiveController;

class UserController extends ActiveController{
    public $modelClass = 'app\models\User';
}

也是由gii创建的我的模型。

通过启用curl并在我的控制器中使用它来解决问题。

答案 1 :(得分:1)

有相同的错误(stil在每个请求上找不到404)已经解决了将.htaccess添加到(我的yii路径)/ web文件夹(与index.php相同的地方):

# use mod_rewrite for pretty URL support
RewriteEngine on

# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Otherwise forward the request to index.php
RewriteRule . index.php

这是因为当您创建一个干净的Yii2实例时,您没有.htaccess文件(在我看来可能是安全原因)。

对我来说:(通过编辑器

)安装(启用curl并在我的控制器中使用它)
composer require --prefer-dist linslin/yii2-curl "*"

在控制器中使用

<?php

namespace app\controllers;

use yii\rest\ActiveController;
use linslin\yii2\curl;//this was added

class UserController extends ActiveController
{

不要工作。 也许这有助于某人:)