访问 laravel 中的 href 参数
Accessing href parameters in laravel
如何用 Laravel 替换 $_GET。我正在尝试访问此 href 参数。我知道在标准 PHP 中,您执行 $_GET 请求,然后执行 SQL 删除查询语句。在 Laravel 中更难,因为它涉及 controllers/routes。我在 ProjectsController 中有一条销毁路线。下面的 link 是我将鼠标悬停在 link 上时显示的内容。我用 Jquery 获得了 id 并通过了它,但问题是我希望它在单击此 link 时从数据库中删除项目。
<a href="projects/delete=31"> delete</a>
控制器:
<?php
namespace App\Http\Controllers;
use App\project;
use App\Http\Requests;
use Illuminate\Http\Request;
use Session;
class ProjectsController extends Controller
{
public function destroy($id){
$project = Project::find($id);
$request->input('delete');
$project->delete();
Session::flash('success', 'The project was successfully deleted!');
return redirect()->route('projects.show', $project->project_id);
}
}
试试这个:
Route::get('projects/delete/{id}', 'ProjectsController@destroy')->where('id', '[0-9]+');
并更新您的 href:
<a href="projects/delete/31"> delete</a>
它将像这样工作。另外,您可以删除该行:$request->input('delete');
将 link 更改为:
<a href="/projects?delete=31"> delete</a>
确保路线如下所示:
Route::get('projects', ....
然后您可以在控制器、模型等中使用 request('delete')
访问此参数
改变
<a href="projects/delete=31">delete</a> // this is wrong
到
接近 01
<a href="projects?delete=31">delete</a>
将您的路线设置为
Route::get('projects', 'ProjectsController@destroy');
将您的 ProjectsController 设置为
class ProjectsController
{
public function destroy()
{
$delete = request()->get('delete');
}
}
接近 02
<a href="projects/delete/31">delete</a>
将您的路线设置为
Route::get('projects/{id}', 'ProjectsController@destroy');
将您的 ProjectsController 设置为
class ProjectsController
{
public function destroy($id) // $id = 31
{
// your code
}
}
参考 routing and controllers 以掌握它们。
也许你可以这样试试
<a href="{{ asset('projects/delete/{id}') }}">delete</a>
并设置路线
Route::get('/projects/delete/{id}', 'ProjectsController@delete');
关于 ProjectsController 中的删除功能
public function delete($id)
{
$projects = projects::find($id);
$projects->delete();
return redirect('/yourEditPage');
}
希望对您有所帮助!
其他答案涵盖了如何通过路由访问 get 参数,这确实回答了您原来的问题。
不过,我建议您在删除内容时遵循 restful 模式(使用 DELETE
方法)。在 laravel 中非常简单。
路线
Route::delete('projects/{project}', 'ProjectsController@destroy')->name('projects.destroy');
控制器方法
public function destroy(Project $project) {
$project->delete();
Session::flash('success', 'The project was successfully deleted!');
return redirect()->route('projects.index');
}
模板
<form action="{{route('projects.destroy', ['project' => $project->id])}}" method="POST">
{{method_field('DELETE')}}
{{csrf_field()}}
<button type="submit">Delete</button>
</form>
如何用 Laravel 替换 $_GET。我正在尝试访问此 href 参数。我知道在标准 PHP 中,您执行 $_GET 请求,然后执行 SQL 删除查询语句。在 Laravel 中更难,因为它涉及 controllers/routes。我在 ProjectsController 中有一条销毁路线。下面的 link 是我将鼠标悬停在 link 上时显示的内容。我用 Jquery 获得了 id 并通过了它,但问题是我希望它在单击此 link 时从数据库中删除项目。
<a href="projects/delete=31"> delete</a>
控制器:
<?php
namespace App\Http\Controllers;
use App\project;
use App\Http\Requests;
use Illuminate\Http\Request;
use Session;
class ProjectsController extends Controller
{
public function destroy($id){
$project = Project::find($id);
$request->input('delete');
$project->delete();
Session::flash('success', 'The project was successfully deleted!');
return redirect()->route('projects.show', $project->project_id);
}
}
试试这个:
Route::get('projects/delete/{id}', 'ProjectsController@destroy')->where('id', '[0-9]+');
并更新您的 href:
<a href="projects/delete/31"> delete</a>
它将像这样工作。另外,您可以删除该行:$request->input('delete');
将 link 更改为:
<a href="/projects?delete=31"> delete</a>
确保路线如下所示:
Route::get('projects', ....
然后您可以在控制器、模型等中使用 request('delete')
访问此参数
改变
<a href="projects/delete=31">delete</a> // this is wrong
到
接近 01
<a href="projects?delete=31">delete</a>
将您的路线设置为
Route::get('projects', 'ProjectsController@destroy');
将您的 ProjectsController 设置为
class ProjectsController
{
public function destroy()
{
$delete = request()->get('delete');
}
}
接近 02
<a href="projects/delete/31">delete</a>
将您的路线设置为
Route::get('projects/{id}', 'ProjectsController@destroy');
将您的 ProjectsController 设置为
class ProjectsController
{
public function destroy($id) // $id = 31
{
// your code
}
}
参考 routing and controllers 以掌握它们。
也许你可以这样试试
<a href="{{ asset('projects/delete/{id}') }}">delete</a>
并设置路线
Route::get('/projects/delete/{id}', 'ProjectsController@delete');
关于 ProjectsController 中的删除功能
public function delete($id)
{
$projects = projects::find($id);
$projects->delete();
return redirect('/yourEditPage');
}
希望对您有所帮助!
其他答案涵盖了如何通过路由访问 get 参数,这确实回答了您原来的问题。
不过,我建议您在删除内容时遵循 restful 模式(使用 DELETE
方法)。在 laravel 中非常简单。
路线
Route::delete('projects/{project}', 'ProjectsController@destroy')->name('projects.destroy');
控制器方法
public function destroy(Project $project) {
$project->delete();
Session::flash('success', 'The project was successfully deleted!');
return redirect()->route('projects.index');
}
模板
<form action="{{route('projects.destroy', ['project' => $project->id])}}" method="POST">
{{method_field('DELETE')}}
{{csrf_field()}}
<button type="submit">Delete</button>
</form>