Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4-如何将输入值设置为路由_Php_Laravel_Routes - Fatal编程技术网

Php Laravel 4-如何将输入值设置为路由

Php Laravel 4-如何将输入值设置为路由,php,laravel,routes,Php,Laravel,Routes,我想在Laravel4中通过Blade实现一个文本输入字段 {{ Form::open(array("route" => "search.show")) }} {{ Form::text("name") }} {{ Form::close() }} 文本输入向我的控制器发送一个字符串,用于通过 class SearchController extends \BaseController { public function show($name) { ret

我想在Laravel4中通过Blade实现一个文本输入字段

{{ Form::open(array("route" => "search.show")) }}
    {{ Form::text("name") }}
{{ Form::close() }}
文本输入向我的控制器发送一个字符串,用于通过

class SearchController extends \BaseController {
    public function show($name) {
        return(Item::where("name", "like", "%" . $name . "%")->get());
    }
}
当我提交带有文本输入的表单时,我想点击
search.show
Route,这是我用它实现的

Route::resource("search", "SearchController");
现在我想知道,如何将文本发布到我的
routes.php
,我的控制器能够通过
show
方法的参数获得输入

我知道我可以通过
Input::get(“name”)
输入数据,但当
Router::resource
给我这个模板时,这不是设计失败吗

对不起,我的英语不好,但我希望你们能帮助我。
谢谢。

您可以插入一个请求对象来显示控制器的方法

class SearchController extends \BaseController {
    public function show(Request $request) {
        $name = $request->input("name");
    }
}
$keyword = Input::get('keyword');
或者您可以执行表单模型绑定:

在Laravel4.x上,您必须使用输入外观

class SearchController extends \BaseController {
        public function show(Request $request) {
            $name = Input::get("name");
        }
    }

如果您使用表单时最好不要使用像
show($id)
函数这样的散列变量函数,因为url应该是这样的
../search/show/{$id}
,请尝试使用
store()
函数

public function store()
{
    $name = Input::get("name");
    /* your code */
}
==


资源控制器布局无法满足您的特定需求。一般来说,除了关键字之外,搜索还有许多不同的方面,尽管这并不总是正确的

我能为您提供的最佳方法是避免使用任何预先存在的资源控制器路由,因为您可能需要它们来实现将来的实际用途

声明路由时,可以向资源控制器添加搜索方法

Route::get('search', [
    'uses' => 'SearchController@search',
    'as' => 'search'
]);

Route::resource('SearchController');
然而,作为一个资源控制器并不是一个很好的解决方案。使用常规控制器。只需删除routes.php中的资源控制器调用,并只实现搜索方法

public function search()
{
    // Your code here
}
这样做的好处是,您可以完全控制路由的命名、使用的HTTP谓词(GET对于搜索更有意义),并且不会使用不属于自己的功能污染资源控制器模板化路由

第二部分是如何传递变量。使用作为url中的独立参数传入的参数进行搜索通常比较困难。使用GET请求只需使用查询字符串

http://myapp.com/search?keyword=search%20%keyword
现在只需使用输入facade或依赖项将请求类注入控制器

class SearchController extends \BaseController {
    public function show(Request $request) {
        $name = $request->input("name");
    }
}
$keyword = Input::get('keyword');

我是拉威尔5号。。。OP“可能”没有使用。啊,但知道这一点很好。对Laravel 5的更新应该是可能的,但我最好在之前检查一下。谢谢你的帮助!它仍在积极开发中,因此请不要使用它,除非您正在测试;-)@DavidBarker老实说,我在Laravel 4方面没有经验,所以您打破了RESTful方法来满足您的需求。。。方钉,圆孔。看起来很有用,我想我会像这样实现我的需求。谢谢你的帮助!