2017-01-13 2 views
2

Как заменить $ _GET на Laravel's. Я пытаюсь получить доступ к этому параметру href. Я знаю, что в стандартном PHP вы выполняете запрос $ _GET, за которым следует запрос SQL delete query. В Laravel это сложнее, потому что оно включает в себя контроллеры/маршруты. У меня есть маршрут уничтожения в ProjectController. Ниже показано, что отображается, когда я наводил ссылку на ссылку. Я получил идентификатор с JQuery и передал его, но проблема в том, что я хочу, чтобы он удалял проект из базы данных всякий раз, когда нажимается эта ссылка.Доступ к параметрам href в laravel

<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); 

    } 

} 
+0

$ ID = Input :: получить ('Удалить') – Gransfall

+1

Быстрый вопрос, хотя я представил свой ответ ниже. Что вы пытаетесь достичь, 'delete' или 'delete'? – Gayan

+0

@ Гаян исправлено Buglinjo и delete steven

ответ

2

Попробуйте это:

Route::get('projects/delete/{id}', '[email protected]')->where('id', '[0-9]+'); 

и обновить HREF:

<a href="projects/delete/31"> delete</a> 

Это будет работать, как это. АОЛО вы можете удалить эту строку: $request->input('delete');

+0

Здравствуйте, я знаю о? Прости. Я добавил это к моему маршруту уничтожить и ничего не делает. Я добавил файл своего контроллера. – steven

+0

Можете ли вы отредактировать сообщение и добавить к нему свой вид, маршрут и контроллер? – Buglinjo

+0

Я добавил свой маршрут и контроллер. – steven

0

Измените ссылку на:

<a href="/projects?delete=31"> delete</a> 

Убедитесь, что маршрут выглядит следующим образом:

Route::get('projects', .... 

Тогда у вас будет доступ к этому параметру с request('delete') в контроллере, модели и т.д.

+0

Эй, проверьте мой обновленный код для файла контроллера. – steven

+0

Используйте 'request()' помощник вместо переменной $ request. Или объект 'Request' объекта в методе' destroy (Request $ request) ' –

+0

Смущенный здесь извините. если вы можете манипулировать моим кодом выше, я мог бы понять. – steven

2

Изменение

<a href="projects/delete=31">delete</a> // this is wrong 

в

Approch 01

<a href="projects?delete=31">delete</a> 

Установите маршрут в

Route::get('projects', '[email protected]'); 

Установите ProjectsController как

class ProjectsController 
{ 
    public function destroy() 
    { 
     $delete = request()->get('delete'); 
    } 
} 

Approch 02

<a href="projects/delete/31">delete</a> 

Установите маршрут в

Route::get('projects/{id}', '[email protected]'); 

Установите ProjectsController как

class ProjectsController 
{ 
    public function destroy($id) // $id = 31 
    { 
     // your code 
    } 
} 

Приведи routing и controllers вчитаться на них.

+0

Человек, вы дважды скопировали ответы. Не делай этого. –

0

может быть, вы можете попробовать, как этот путь

<a href="{{ asset('projects/delete/{id}') }}">delete</a> 

и установить маршрут

Route::get('/projects/delete/{id}', '[email protected]'); 

о функции удаления в ProjectsController

public function delete($id) 
{ 
    $projects = projects::find($id); 
    $projects->delete(); 
    return redirect('/yourEditPage'); 
} 

надеюсь, что это может помочь вам!

0

Другие ответы касались того, как вы можете получить доступ к параметру get через маршрутизацию, что действительно отвечает на ваш первоначальный вопрос.

Я бы посоветовал вам следовать за спокойным рисунком (используя метод DELETE) при удалении вещей. В laravel это довольно просто.

Маршрут

Route::delete('projects/{project}', '[email protected]')->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> 
Смежные вопросы