Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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路由和控制器_Php_Laravel - Fatal编程技术网

Php 用于搜索的Laravel路由和控制器

Php 用于搜索的Laravel路由和控制器,php,laravel,Php,Laravel,在学习了一些教程之后,我正在构建我的第一个基本laravel web应用程序,这是我自己修补的第一个。我在路由到控制器然后获取正确的url时遇到了一些问题 理想情况下,此时我应该只有两条路由/和/{user}。在主页上,您可以通过表单搜索该用户,该表单应将您带到/{user} 路线(我有三个原因,我仍在努力让它发挥作用,我想我需要一个帖子): 家庭控制器: public function index() { return View::make('helpdesk'); } public

在学习了一些教程之后,我正在构建我的第一个基本laravel web应用程序,这是我自己修补的第一个。我在路由到控制器然后获取正确的url时遇到了一些问题

理想情况下,此时我应该只有两条路由
/
/{user}
。在主页上,您可以通过表单搜索该用户,该表单应将您带到
/{user}

路线(我有三个原因,我仍在努力让它发挥作用,我想我需要一个帖子):

家庭控制器:

public function index()
{
    return View::make('helpdesk');
}

public function student($user) {
    return View::make('selfservice')
        ->with('user', $user);
}

public function studentLookUp() {
    $user = Input::get('ID');

    return View::make('selfservice')
        ->with('user', $user);
}
表格:

{{Form::open(数组('class'=>'navbar-Form-navbar-left','role'=>'search'),数组('action'=>'HomeController@student')) }}
{{Form::text('ID','',数组('placeholder'=>'ID','class'=>'Form-control'));}
{{Form::button('Search',array('class'=>'btn-btn-default'))}
{{Form::close()}}
此时,我可以从主页(“/”)进行搜索,它将带我返回主页,但使用搜索到的用户,这是我希望它的工作方式,但它没有正确的url
homepage.com/username


任何帮助都将不胜感激

首先注册一条路由以侦听您的搜索请求:

1。搜索路线: 注册搜索路径

//route search 
Route::get('/search',['uses' => 'SearchController@getSearch','as' => 'search']);
2。搜索视图:- 现在在视图中创建搜索表单:-

<form  action="/search" method="get">
<input type="text"  name="q" placeholder="Search.."/>
<button type="submit">Search</button>
</form>
5。为学生更新路线

Route::get('/{student}',['uses' => 'HomeController@student','as' => 'student.show']);

更新更新答案以直接获取学生页面


要从搜索重定向到
website.domain\{user}
,请执行以下步骤:-

1。修改SearchController

<?php

class SearchController extends \BaseController {


    public function getSearch()
    {
        //get keywords input for search
        $keyword=  Input::get('q');

        //search that student in Database
         $student= Student::find($keyword);

        //redirect directly to student.show route with student detail
        return Redirect::route('student.show', array('student' => $student));
    }

}
public function student($student)
{
    //here display student detail
}

你的意思是
Route::get('/{user}','HomeController@student');无效?谢谢,这肯定很有帮助。此时,我可以搜索一个用户,他们会出现,但url是
homepage.com/search
。从getSearch控制器获取查询后,是否有方法重定向到
homepage.com/username
?当显示搜索结果时,该时间的URL将是
website.domain/search?q=关键字
,但在此搜索结果视图中,您将显示所有用户,这些用户的URL将是
website.domain/{user}
首先了解流程
主页=>搜索=>搜索结果=>用户页面
。在搜索和用户视图之间将有一个中间视图搜索结果。单击搜索结果视图中可用的链接后,页面将重定向到
website.domain/{user}
,这就是我的想法。是否要自动路由而无需单击搜索结果页面上的链接?非常感谢您的帮助。就这样,我在拉威尔学到了一些我不知道的新技巧!
@foreach ($students as $key=> $student)
<div>
<a href="{{ URL::route('student.show', ['id' => $student->id]) }}">{{$student->name}}</a>
</div>              
@endforeach
website.domain/{student}
Route::get('/{student}',['uses' => 'HomeController@student','as' => 'student.show']);
<?php

class SearchController extends \BaseController {


    public function getSearch()
    {
        //get keywords input for search
        $keyword=  Input::get('q');

        //search that student in Database
         $student= Student::find($keyword);

        //redirect directly to student.show route with student detail
        return Redirect::route('student.show', array('student' => $student));
    }

}
public function student($student)
{
    //here display student detail
}