-
Notifications
You must be signed in to change notification settings - Fork 65
Expand file tree
/
Copy pathroutes.php
More file actions
40 lines (33 loc) · 1.4 KB
/
Copy pathroutes.php
File metadata and controls
40 lines (33 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
// Route for Homepage - displays all products from the shop
Route::get('/', function()
{
$products = Product::all();
return View::make('index', array('products'=>$products));
});
// Route that shows an individual product by its ID
Route::get('products/{id}', function($id)
{
$product = Product::find($id);
// Get all reviews that are not spam for the product and paginate them
$reviews = $product->reviews()->with('user')->approved()->notSpam()->orderBy('created_at','desc')->paginate(100);
return View::make('products.single', array('product'=>$product,'reviews'=>$reviews));
});
// Route that handles submission of review - rating/comment
Route::post('products/{id}', array('before'=>'csrf', function($id)
{
$input = array(
'comment' => Input::get('comment'),
'rating' => Input::get('rating')
);
// instantiate Rating model
$review = new Review;
// Validate that the user's input corresponds to the rules specified in the review model
$validator = Validator::make( $input, $review->getCreateRules());
// If input passes validation - store the review in DB, otherwise return to product page with error message
if ($validator->passes()) {
$review->storeReviewForProduct($id, $input['comment'], $input['rating']);
return Redirect::to('products/'.$id.'#reviews-anchor')->with('review_posted',true);
}
return Redirect::to('products/'.$id.'#reviews-anchor')->withErrors($validator)->withInput();
}));