Значения не передаются из файла ctp на контроллер в CakePHP - PullRequest
0 голосов
/ 29 сентября 2018

Я пробовал несколько решений, опубликованных на этом форуме и других, но это не помогло до сих пор.Итак, я публикую свой вопрос наконец.Кстати, я использую CakePHP 3.6.

Я пытаюсь передать переменную ($product->id) с помощью кнопки отправки в view.ctp в действие моего контроллера «addit», но я просто получаю «Undefined variable: id»(Я пробовал addit($id) и addit() в любом случае у меня одинаковый результат.)

view.ctp

<p>
    <?php echo $this->Form->create('NULL',['url'=>['controller'=>'products','action'=>'addit']]);?>
    <?php echo $this->Form->input('id', ['type' => 'hidden', 'value' => $product->id]); ?>

    <?php echo $this->Form->button('Add to cart now');?>

    <?php echo $this->Form->end();?>

</p>

Контроллер:Продукты

public function addit() {
    $this->autoRender = false;
    if ($this->request->is('post')) {
        // $this->Products->addProduct($this->request->data['Cart']['product_id']);
        echo "".$this->Products->get($id);//for test
    } else {
        echo "".$this->Products->get($id);//for test
    }
 }

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Согласно Cakephp 3.6

Все данные POST могут быть доступны с помощью Cake \ Http \ ServerRequest :: getData ().У всех данных формы, содержащих префикс данных, этот префикс данных будет удален.Например:

// An input with a name attribute equal to 'MyModel[title]' is accessible at
$title = $this->request->getData('MyModel.title');

Вы можете получить значение переменной $ id следующим образом:

$id = $this->request->getData('id');

Дополнительная информация: Данные тела запроса

0 голосов
/ 29 сентября 2018

Это то, что вы хотите сделать?

$id = $this->request->getData('id');
debug($this->Products->get($id)); //for test
...