Я применял учебник по созданию успокоительного приложения, используя ZF2 rest api.
Я столкнулся со странной проблемой, все остальные действия работают отлично, кроме create($data)
public function create($data)
{
$data['id'] = 0;
$form = new AlbumForm();
$album = new Album();
$form->setInputFilter($album->getInputFilter());
$form->setData($data);
if ($form->isValid()) {
$album->exchangeArray($data);
$id = $this->getAlbumTable()->saveAlbum($album);
return $this->get($id);
} else {
return new JsonModel(array("data" => 0 );
}
}
Я использовал плагин restful в Firefox и данные выглядят так
artist=testName&title=testTitle
Я проследил проблему и понял, что переменная $data
всегда пустой и не хранит никакого значения. С другой стороны, когда я использую update($id, $data)
все работает нормально
public function update($id, $data)
{
$data['id'] = $id;
$album = $this->getAlbumTable()->getAlbum($id);
$form = new AlbumForm();
$form->bind($album);
$form->setInputFilter($album->getInputFilter());
$form->setData($data);
if ($form->isValid()) {
$id = $this->getAlbumTable()->saveAlbum($form->getData());
}
return new JsonModel(array('data' => $data));
}
Так что у меня могут быть какие-то предложения?
Обновите один:
здесь module.config.php
файл, чтобы увидеть, есть ли в нем ошибка или нет
<?php
return array(
'controllers' => array(
'invokables' => array(
'AlbumRest\Controller\AlbumRest' => 'AlbumRest\Controller\AlbumRestController',
),
),
// The following section is new` and should be added to your file
'router' => array(
'routes' => array(
'album-rest' => array(
'type' => 'Segment',
'options' => array(
'route' => '/album-rest[/:id]',
'constraints' => array(
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'AlbumRest\Controller\AlbumRest',
),
),
),
),
),
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
);
Обновление два:
проблема была из Firefox RestfulClient. Я установил почтальон, и он работал отлично.
Задача ещё не решена.
Других решений пока нет …