Подтвердить что ты не робот

Backbone.js Как использовать с PHP

Я искал backbone.js, и я не могу понять, как заставить его общаться с php, чтобы сохранить данные моделей. Он отправляет запрос, но как я могу захватить этот запрос, будь то "Создать", "Обновить", "Прочитать", "Удалить" и т.д.

Спасибо

4b9b3361

Ответ 1

Другим вариантом, который вы можете рассмотреть, является свертывание с предварительно упакованной структурой RESTful, которая имеет все необходимые функции, встроенные для выполнения запросов сервера Backbone. Мой личный фаворит Josh Lockhart SlimPHP Framework.

Простой примерный код (после установки SlimPHP), используемый для вызова ваших магистральных вызовов, выглядит следующим образом.

$app->get('/user', function() use ($app) {

    // See if session is set, get user info as array
    if (isset($_SESSION['userID']) {
         $user = // grab user with userID data from DB
    }

    // Respond to the get request with a json object
    $response = $app->response;
    $response['Content-Type'] = 'application/json';
    $response->body(json_encode($user));
}

Вот пример POST, который превращает Backbone json в массивы.

// Middleware that detects type of data and converts it to something usable
$app->add('Slim_Middleware_ContentTypes');    // JSON to associative array

...

$app->post('/message', function() use ($app) {
    $dataIn = $app->request()->getBody();

    ...

    // Save to DB $dataIn['message'], $dataIn['author'], etc.
}

Вот пример PUT с использованием некоторых параметров.

$app->put('/user/:id', function($id) use ($app) {

    // Find appropriate user from DB that has $id as ID

    $dataIn = $app->request()->getBody();

    // Save to DB $dataIn['name'], $dataIn['age'], etc.
}

И вот DELETE.

$app->delete('/message/:id', function($id) use ($app) {

    // Find appropriate message from DB that has $id as ID

    // Delete message with id of $id
}

Хотя это не исчерпывающий пример всех других вещей, которые следует учитывать, он должен дать вам представление о тех типах открытых решений, которые уже существуют для вас. Мне лично нравится Slim, потому что он такой легкий, простой, но у него есть все функции, которые вы хотите использовать на сервере RESTful. Отлично подходит для прототипирования. Объедините его с уровнем абстракции DB и некоторыми другими инструментами, и вы можете сделать что угодно быстрее.

Здесь вы можете увидеть еще один пример кода:

И вот ссылка на некоторые другие решения RESTful на основе PHP: Список рамок

Ответ 2

Модель backbone.js использует определенные URL для извлечения и отправки данных. Вы должны убедиться, что там есть php script.

Теперь есть две возможности.

Сначала метод отправляется внутри переменной $_POST в качестве дополнительной переменной. Во-вторых, вы должны искать использованный метод запроса (GET, POST, PUT, DELETE), который вы можете использовать с $_SERVER['REQUEST_METHOD']

Теперь вы можете использовать простые инструкции if-else или switch для обработки запроса и доставки необходимых данных, как я думаю, json.

Ответ 3

$GLOBALS ['HTTP_RAW_POST_DATA'] отлично работает для меня, я не знаю, по какой причине print_r ($ _ POST) не печатает анонимность!!

Ответ 4

В вашем php script у вас будет это для методов PUT и DELETE, поскольку вы можете отфильтровать их с помощью: $_SERVER['REQUEST_METHOD']

parse_str(file_get_contents("php://input"),$post_vars);

Если запрос POST или GET, вы можете использовать его нормально, но если запрос PUT или DELETE, используйте приведенную выше строку, и вы можете получить доступ к vars с помощью:

$post_vars['fruit'] for example...

Когда вы будете готовы ответить на магистраль, вам нужно сначала создать правильный заголовок:

header('Content-type: application/json; charset=utf-8');

и закодируйте ответ с помощью json:

echo json_encode(array("message"=>"missing fields","status"=>200));