2014-10-17 101 views
0

努力想出如何最好地做我通常在简单的PHP中。在laravel视图中使用URL数据

我有以下网址:

/viewbuild/2 

目的是viewbuild是视图和图2是数据库行的id。

通常它只会是:

$id = $_GET['id']; 

,但无法弄清楚,以做正确使用laravel。

这是我的路线:

Route::get('viewbuild', function() 
{ 
    return View::make('viewbuild'); 
}); 

而且在我看来,我已经做了如:

<?php 
    $build = Build::find(20); 
?> 

{{ $build->id }} 

这正确搜索建立表与2 id的行,然后显示其ID。

我现在想要做的是从URL中拉出'20'值。

我曾尝试:

Route::get('/viewbuild/{build_id}', function($build_id = null) 
{ 
    $data = array(
    'build_id' => $build_id, 
); 
    return View::make('viewbuild', $data); 
}); 

,然后在我的看法:

$build = Build::find(build_id); 

,但我得到未定义的常量错误。

对此有何帮助?

+0

不知道,但好像你对阵列通过查看一个错字。 “build_ud”for build_id – engvrdr 2014-10-17 22:23:12

+0

是的,注意到了,但修复了它,没有运气。想一想我错了。试图将URL传递给控制器​​,然后进行视图 – Lovelock 2014-10-17 22:24:40

+0

顺便说一句,而不是在控制器中获取构建对象,并传递对象来查看将是更好的做法 – engvrdr 2014-10-17 22:25:42

回答

0

基本上我可以看到两件事情从快看你的代码:

  1. 一个错字设置阵列时要传递到视图build_ud应该build_id我相信
  2. 你引用一个常数build_id(没有$符号)在您的视图中,而不是传递给视图的传递变量。即:

$ build = Build :: find(build_id);

应该是:

$构建=构建::发现($ build_id);

+0

感谢您的答复,已经找到了这样做的正确方法和解决了我接下来的许多问题。感谢虽然:) – Lovelock 2014-10-17 22:26:30

0

您的路线闭合应该是这样的:

Route::get('/viewbuild/{build_id?}', function($build_id = null) 
{ 
    // Query the database here instead of inside the view 
    $build = Build::find($build_id); 

    return View::make('viewbuild', compact('build')); 
}); 
+0

谢谢,但一个问题,该页面正在处理一个文件夹。所以我的CSS等现在链接到viewbuild/css/main.css。任何想法如何解决这个问题? – Lovelock 2014-10-17 22:34:08

+0

确保您的网址以'/'开头,以便它们相对于根路径。所以你的css链接应该有'href =“/ path/to/file.css”'(注意前面的'/') – Bogdan 2014-10-17 22:36:14

+0

否定的,viewbuild页面与'about'和about页面处于同一层它工作正常。但我想因为url是viewbuild/id它认为viewbuild是一个目录? – Lovelock 2014-10-17 22:39:39

相关问题