Input 在cakephp 3中将模板之间的文本数据发送到控制器

Input 在cakephp 3中将模板之间的文本数据发送到控制器,input,request,cakephp-3.2,Input,Request,Cakephp 3.2,定义: 我想将文本数据从模板(ctp文件)发送到控制器,但它不起作用 我现在做的是: 我有这个控制器,它有一个叫做搜索的功能,如下所示: /src/Controller/CoursesController : public function search() { $search = $this->request->getData('keyword'); debug($search);die; /src/Template/search: &

定义:

我想将文本数据从模板(ctp文件)发送到控制器,但它不起作用

我现在做的是:

我有这个控制器,它有一个叫做搜索的功能,如下所示:

/src/Controller/CoursesController :

    public function search()
     {

    $search = $this->request->getData('keyword');

    debug($search);die;

/src/Template/search:

 <?= $this->Form->create(null, ['url' => ['controller'=>'courses','action' => 'search']]) ?>

 <?= $this->Form->control('keyword', ['label' => false, 'type'=>'text','class'=>'form-control', 'placeholder' => __('Search for...')]); ?>

 <?= $this->Form->button(__('Go'), ['class' => 'btn btn-default', 'type' => 'submit']) ?>


   <?= $this->Form->end() ?>

尽管我尝试从表单中获取文本数据并使用debug打印,但不幸的是,我的数组为空,请尝试以下操作:

public function search()
{
    $data = $this->request->data;
    if($this->request->is(['patch', 'post', 'put', 'get'])) 
    {
        $search = $this->request->data('keyword');
        debug($search);   
    }
}

不确定这是否能解决您的问题,但控制器名称应在URL参数中大写:
['URL'=>['controller'=>'Courses','action'=>'search']]
由于视图和操作相同,因此无需设置URL。无论如何,您的代码应该可以工作,除非您有一些组件在后台执行某些操作