использование yii rest api с форматом URL GET по умолчанию, а не с форматом PATH

У меня проблема с yii rest API. Я настроил его для работы в соответствии с руководством на странице фреймворка yii, но после этого я понял, что мой API работает, НО НЕ некоторые большие ЧАСТИ моей СТРАНИЦЫ, поскольку он основан на формате GET URL, а не на PATH, который требуется остальным API .

Итак, в моем config/main.php у меня есть следующая настройка

'urlManager' => array (
                        'urlFormat' => 'path',
                        'rules' => array (
                                'student/<id:\d+>/<title:.*?>' => 'student/view',
                                'students/<tag:.*?>' => 'student/index',

                                array (
                                        'apistudent/register',
                                        'pattern' => 'api/<model:\w+>',
                                        'verb' => 'POST' 
                                ),

                                '<controller:\w+>/<action:\w+>' => '<controller>/<action>' 
                        ) 
                ),

У меня также есть контроллер с именем ApiStudentController с методом actionRegister().

Итак, как уже говорилось, API работает нормально, но моя страница не работает, так как я установил urlFormat как «путь».

Вопрос в том... как я могу использовать остальные API, но без формата URL-адреса PATH, а вместо формата URL-адреса по умолчанию (index.php?r=apistudent/register)?


person MTurPash    schedule 28.06.2016    source источник
comment
Привет, у тебя есть какое-нибудь решение?   -  person Muhammad Shahzad    schedule 11.07.2016


Ответы (1)


Я тоже столкнулся с той же проблемой в yii 1.x. Мне просто нужен только мой контроллер API в старом формате GET, а не в формате PATH (поскольку я изменил URL-адреса своих веб-сайтов в формате PATH). Наконец-то я заработал с небольшим взломом в файле скрипта.

$app = Yii::createWebApplication($env->configWeb); //store the app 
//Change the UrlFormat for urlManager to get if a get request is given instead of a path format one.
if (isset($_GET['r'])) {
    Yii::app()->urlManager->setUrlFormat('get');
}   
$app->run(); //run the app

Я не знаю, решит ли это вашу проблему. Но это может дать вам идею. Удачного кодирования!

person Jothi Sankar N Kanakavel    schedule 17.08.2016