Я пробовал несколько решений, опубликованных на этом форуме и других, но это не помогло до сих пор. Итак, я публикую свой вопрос наконец. Кстати, я использую 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
}
}
Это то, что вы хотите сделать?
$id = $this->request->getData('id');
debug($this->Products->get($id)); //for test
Согласно Cakephp 3.6
Все данные POST могут быть доступны с помощью
Торт \ 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');
Дальнейшее чтение: Данные тела запроса