我知道我的代码有些错误(因此我的帖子!)。当访问者访问网站的“/”部分时,我希望显示“主页”视图。
目前,当用户访问网站的“/ home”部分时,该视图有效。我正在把头发拉出来怎么做!
Route.php:
Route::controller('/', 'HomeController');
Route::controller('users', 'UsersController');
Route::get('events/{id}/{slug}', 'EventsController@show');
Route::controller('events', 'EventsController');
HomeController.php:
<?php
class HomeController extends BaseController {
protected $layout = "layouts.main";
public function getHome(){
$events = myApp\Event::where('date','>=', DB::raw('CURDATE()'))->first();
$this->layout->content = View::make('home', array('events' => $events));
}
}
Home.blade.php:
<div class="col-md-4">
<h2>Next Event</h2>
<h3>{{$events->title}}</h3>
<p>Presented by {{ $events->consultant()->first()->title }} {{ $events->consultant()->first()->surname }}</p>
<b><p>{{ date("j F Y", strtotime($events->date)) }} from {{ date("g:ia", strtotime($events->start_time)) }}</p></b>
<a class="btn btn-success" href="{{ URL::to('events/' . $events->slug) }}">Book your place now.</a>
</div>
我设法通过在routes.php中使用它来使视图与'/'目录一起使用:
Route::get('/', function(){
return View::make('home');
});
但是,我收到错误:
未定义变量:事件(查看:/Users/Sites/gp/app/views/home.blade.php)。
好像,HomeController没有通过改变路径将'events'数组传递到视图中?!任何帮助/补救/解释都将非常感激。
答案 0 :(得分:0)
这就是Laravel RESTful控制器的工作原理,但您可以在其他路线之前为/
创建一条新路线,指向该操作:
Route::controller('users', 'UsersController');
Route::get('events/{id}/{slug}', 'EventsController@show');
Route::controller('events', 'EventsController');
Route::get('/', 'HomeController@getHome');
Route::controller('/', 'HomeController');
修改强>
您必须了解Laravel路由系统尝试尽可能快地解析路由,因此如果它找到适合当前URI的路由,它将使用该路由并忘记所有其他路由。一个例子:
Route::get('/{variable}' 'Controller@action');
这是非常通用的路线,可以解决任何问题,甚至
http://your-site.dev/events
因此,如果您在此之前添加该路线:
Route::get('events/{id}/{slug}', 'EventsController@show');
您的活动路线永远不会被击中。这就是为什么你最通用的路线必须是最后一条路线。