Yii создание api для загрузки данных

1. в приложении нужно сделать чпу

\yii\protected\config\main.php

//////
<?  
      'urlManager' => array(
            'urlFormat' => 'path',
            'showScriptName' => false,
            'rules' => array(
                // стандартное правило для обработки '/' как 'site/index'
                '' => 'site/index',
                // это пример добавления который заработал
                //'secondcontroller/<action:.*>'=>'secondcontroller/<action>',
                'user/<action:.*>' => 'user/<action>',
                //'<action:.*>'=>'site/<action>', //закомментил а то глючило с ним
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ),
        ),
//////
\yii\.htaccess
/////
Options Includes FollowSymLinks
#hide index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
/////

2. На основании таблицы
////
CREATE TABLE `tbl_user` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NULL DEFAULT NULL,
    `email` VARCHAR(50) NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `username` (`username`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

////

\yii\protected\controllers\MuserController.php
/////
<? public function actionApi() {
        if (!empty($_POST)) {
            $model = new Muser;
            $model->attributes = $_POST;

            try {
                if ($model->save())
                    echo json_encode(array($model->id));
                elseif ($model->hasErrors()) {
                    echo  json_encode($model->getErrors());
                } else
                    echo json_encode(array('false'));
                
            } catch (CDbException $e) {
                echo json_encode(array($e->errorInfo[2]));
            }
        } else
            echo json_encode(array('no data'));
    }
/////

клиент
/////
<?php
$post = array(
    'username' => 'sds3',
    'password' => 'Password',
    'email' => 'Email',
);

$ch = curl_init('http://yii/muser/api');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

// execute!
$response = curl_exec($ch);
echo '<pre>';
print_r($response);

// close the connection, release resources used
curl_close($ch);
/////





















Комментарии

Популярные сообщения из этого блога

Пишем логи на C# (.NET). Легкий способ.

Учебник yii2