我正在构建我的第一个基本laravel Web应用程序,在完成了一些教程之后,这是我自己第一个修补的应用程序。我在路由到控制器然后获取正确的URL时遇到了一些麻烦。
理想情况下,此时我应该只有两条路线/和/{user}。在首页上,您可以通过表格搜索用户,该表格应将您带到/{user}。
路线(我有三个原因,我仍在努力使其正常运行,我认为我需要一个POST):
Route::get('/', 'HomeController@index');
Route::get('/{user}', 'HomeController@student');
Route::post('/', 'HomeController@studentLookUp');
Run Code Online (Sandbox Code Playgroud)
家庭控制器:
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);
}
Run Code Online (Sandbox Code Playgroud)
形成:
{{ Form::open(array('class'=>'navbar-form navbar-left', 'role'=>'search'), array('action' => 'HomeController@student')) }}
<div class="form-group">
{{ Form::text('ID', '', array('placeholder'=>'ID', 'class'=>'form-control') ); }}
</div>
{{ Form::button('Search', array('class'=>'btn btn-default')) }}
{{ Form::close() }}
Run Code Online (Sandbox Code Playgroud)
此时,我可以从主页('/')进行搜索,它将带我回到主页,但随着搜索到的用户,除了没有正确的url之外,我希望它能够正常工作homepage.com/username。
任何帮助将非常感激!
首先注册一条路线以监听您的搜索请求:
1.搜索路线: 注册搜索路线。
//route search
Route::get('/search',['uses' => 'SearchController@getSearch','as' => 'search']);
Run Code Online (Sandbox Code Playgroud)
2.搜索视图:- 现在在视图中创建搜索表单:-
<form action="/search" method="get">
<input type="text" name="q" placeholder="Search.."/>
<button type="submit">Search</button>
</form>
Run Code Online (Sandbox Code Playgroud)
3. SearchController:
现在创建SearchController来处理您的搜索逻辑。SearchController:
<?php
class SearchController extends \BaseController {
public function getSearch()
{
//get keywords input for search
$keyword= Input::get('q');
//search that student in Database
$students= Student::find($keyword);
//return display search result to user by using a view
return View::make('selfservice')->with('student', $students);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您必须创建一个视图自助服务才能显示搜索结果。
4.自助服务视图:
@foreach ($students as $key=> $student)
<div>
<a href="{{ URL::route('student.show', ['id' => $student->id]) }}">{{$student->name}}</a>
</div>
@endforeach
Run Code Online (Sandbox Code Playgroud)
在这里,对于每个学生结果,将创建一个链接。该链接将是链接:-
website.domain/{student}
Run Code Online (Sandbox Code Playgroud)
5.更新学生的路线
Route::get('/{student}',['uses' => 'HomeController@student','as' => 'student.show']);
Run Code Online (Sandbox Code Playgroud)
UPDATE更新了答案以直接获取学生页面
要从搜索重定向到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));
}
}
Run Code Online (Sandbox Code Playgroud)
2.现在student.show在HomeController中
为Route添加一个函数Route::get('/{student}',['uses' => 'HomeController@student','as' => 'student.show']);
在HomeController中
public function student($student)
{
//here display student detail
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16033 次 |
| 最近记录: |