Laravel 5 从 URL 获取 ID
Laravel 5 getting ID from URL
我有一个 table 视图,我可以在其中单击按钮图标并重定向到另一个页面,其中包含已单击行的 id。
@foreach ($patients as $patient)
<tr>
<td>{{ $patient->pID }}</td>
<td>{{ $patient->pName }}</td>
<td>{{ $patient->pAddress }}</td>
<td>{{ $patient->pBday }}</td>
<td>{{ $patient->pPhone}}</td>
<td>{{ $patient->pEcon }}</td>
<td>{{ $patient->pDreg }}</td>
<td></td>
<td>
<a href="{{ URL::to('visit/'.$patient->pID) }}">
<img src="../images/viewvisit.png" style="width:30px; height:30px;">
</a>
</td>
<td>
<a href="{{ URL::to('addeditvisit/'.$patient->pID) }}">
<img src="../images/visit.png" style="width:30px; height:30px;">
</a>
</td>
<td>
<a href="{{ URL::to('editpatient/'.$patient->pID) }}">
<img src="../images/update.png" style="width:30px; height:30px;">
</a>
</td>
<td>
<a href="{{ URL::to('deletepatient/'.$patient->pID) }}">
<img src="../images/delete.png" style="width:30px; height:30px;">
</a>
</td>
</tr>
@endforeach
我想要的是从 URL 中获取 id 并将其放入一个变量中,以便我可以在其他页面中使用它。
我目前受困于此控制器功能。
public function index(Request $request) {
$doctors = Doctor::where('dStatus', 0)
->lists('dName', 'dID');
$beds = Bed::where('bStatus', 0)
->lists('bName', 'bID');
$patient = Patient::patient();
// $uri = $request->path('patient');
return View::make('pages.addeditvisit', [
'doctors'=>$doctors,
'beds'=>$beds,
'patient'=>$patient->pID
]);
}
诀窍是在包含id的路由中声明url的结构,例如:
// {{ URL::to('editpatient/'.$patient->pID) }}
Route::get('editpatient/{patientId}', 'MyController@index');
然后,在controller的函数中注入id即可:
public function index($patientId){
// $patientId is the variable from url
}
基本上当你定义路由时,你会使用一种叫做route parameters的东西,就像这样
Route::get('/visit/{id}', 'Controller@someMethod');
此 ID 将在您的处理函数中用作参数,
public function someMethod($id) {
// you have the id here
}
Route::get('post/user/{id}','ProductController@allpost')->where('id', '[0-9]+');
控制器
public function allpost($id)
{
$products = Product::where('uploadby', $id)->orderBy('created_at','desc')->paginate(5); <br>
return view('product.user_product')->with('products', $products);
}
简单示例:
as link=> example.com/user/1
as rout=> Route::get('user/{id}', 'UserController@user');
as UserController function
public function user($id){
echo $id;
}
output => 1
来晚了。但是为了像我这样的其他人的利益;
如果您不必按照上述答案所示的方法执行此操作,从 Laravel 5.0 开始(不确定以前的版本),您可以执行
$request->route('id');
即returns路由上id
参数的值。
或者只在 Blade 中使用它:{{ request()->route('id') }}
关于如何从路由中获取参数,请参考已回答的问题。但是如果你偶然发现这个旧的 Laravel 线程寻找如何通过它的 ID 检索模型,最简单的方法是在控制器的请求参数中实例化模型:
Route::get('/retrieve_product/{product}', 'SearchController@getProduct');
然后在你的控制器中,你只需要:
use App\Product;
class SearchController extends Controller
{
public function getProduct( Product $product ) {
return $product;
}
}
就是这样。没有找到,没有在哪里,没有得到,没有第一个等等
因此,在此示例中,如果您访问 /retrieve_product/1
,第一个产品将返回给您。
我有一个 table 视图,我可以在其中单击按钮图标并重定向到另一个页面,其中包含已单击行的 id。
@foreach ($patients as $patient)
<tr>
<td>{{ $patient->pID }}</td>
<td>{{ $patient->pName }}</td>
<td>{{ $patient->pAddress }}</td>
<td>{{ $patient->pBday }}</td>
<td>{{ $patient->pPhone}}</td>
<td>{{ $patient->pEcon }}</td>
<td>{{ $patient->pDreg }}</td>
<td></td>
<td>
<a href="{{ URL::to('visit/'.$patient->pID) }}">
<img src="../images/viewvisit.png" style="width:30px; height:30px;">
</a>
</td>
<td>
<a href="{{ URL::to('addeditvisit/'.$patient->pID) }}">
<img src="../images/visit.png" style="width:30px; height:30px;">
</a>
</td>
<td>
<a href="{{ URL::to('editpatient/'.$patient->pID) }}">
<img src="../images/update.png" style="width:30px; height:30px;">
</a>
</td>
<td>
<a href="{{ URL::to('deletepatient/'.$patient->pID) }}">
<img src="../images/delete.png" style="width:30px; height:30px;">
</a>
</td>
</tr>
@endforeach
我想要的是从 URL 中获取 id 并将其放入一个变量中,以便我可以在其他页面中使用它。
我目前受困于此控制器功能。
public function index(Request $request) {
$doctors = Doctor::where('dStatus', 0)
->lists('dName', 'dID');
$beds = Bed::where('bStatus', 0)
->lists('bName', 'bID');
$patient = Patient::patient();
// $uri = $request->path('patient');
return View::make('pages.addeditvisit', [
'doctors'=>$doctors,
'beds'=>$beds,
'patient'=>$patient->pID
]);
}
诀窍是在包含id的路由中声明url的结构,例如:
// {{ URL::to('editpatient/'.$patient->pID) }}
Route::get('editpatient/{patientId}', 'MyController@index');
然后,在controller的函数中注入id即可:
public function index($patientId){
// $patientId is the variable from url
}
基本上当你定义路由时,你会使用一种叫做route parameters的东西,就像这样
Route::get('/visit/{id}', 'Controller@someMethod');
此 ID 将在您的处理函数中用作参数,
public function someMethod($id) {
// you have the id here
}
Route::get('post/user/{id}','ProductController@allpost')->where('id', '[0-9]+');
控制器
public function allpost($id)
{
$products = Product::where('uploadby', $id)->orderBy('created_at','desc')->paginate(5); <br>
return view('product.user_product')->with('products', $products);
}
简单示例:
as link=> example.com/user/1
as rout=> Route::get('user/{id}', 'UserController@user');
as UserController function
public function user($id){
echo $id;
}
output => 1
来晚了。但是为了像我这样的其他人的利益;
如果您不必按照上述答案所示的方法执行此操作,从 Laravel 5.0 开始(不确定以前的版本),您可以执行
$request->route('id');
即returns路由上id
参数的值。
或者只在 Blade 中使用它:{{ request()->route('id') }}
关于如何从路由中获取参数,请参考已回答的问题。但是如果你偶然发现这个旧的 Laravel 线程寻找如何通过它的 ID 检索模型,最简单的方法是在控制器的请求参数中实例化模型:
Route::get('/retrieve_product/{product}', 'SearchController@getProduct');
然后在你的控制器中,你只需要:
use App\Product;
class SearchController extends Controller
{
public function getProduct( Product $product ) {
return $product;
}
}
就是这样。没有找到,没有在哪里,没有得到,没有第一个等等
因此,在此示例中,如果您访问 /retrieve_product/1
,第一个产品将返回给您。