2013-08-04 3 views
0

Я не могу найти способ удалить мои новости. Он возвращает мне ошибку 404 (не найден).Laravel 4 удаление по id

моя модель (news.php):

<?php 

class News extends Eloquent { 

    protected $table = 'aac_news'; 

    protected $fillable = array('author', 'title', 'content'); 
    public $timestamps = true; 
} 

мой контроллер:

 <?php 

    class AdminController extends BaseController { 



    /** 
    * News Repository 
    * 
    * @var News 
    */ 
    protected $news; 

    public function __construct(News $news) 
    { 
     $this->news = $news; 
    } 

/** ------------------------------------------ 
* News Functions 
* ------------------------------------------ 
*/ 

    public function get_news() 
    { 

     return View::make('admin.news_managment')->with('newss', $this->news->all()); 
    } 

    public function create_news() 
    { 

     return View::make('admin.create_news'); 
    } 

    public function post_create_news() 
    { 
    $input = Input::all(); 

    $rules = array(
     'author' => 'required|min:4|max:255', 
     'title' => 'required|unique:aac_news,title|min:4|max:255', 
     'content' => 'required|unique:aac_news,content|min:10' 
     ); 

    $validation = Validator::make($input, $rules); 

    if ($validation->fails()) { 

     return Redirect::back()->withErrors($validation); 

    } else { 

    News::create($input); 
    return Redirect::to('news/index'); 
} 
} 

public function news_delete($newsId) 
{ 
$news = $this->news->findOrFail($newsId); 
$news->delete(); 
return Redirect::back()->with('success', 'Your news post has been deleted.'); 
} 
} 

и мои маршруты:

# News Management 
Route::get('admin/dash/news', '[email protected]_news'); 
Route::get('admin/dash/news/add', '[email protected]_news'); 
Route::post('admin/dash/news/add', '[email protected]_create_news'); 
Route::get('admin/dash/news/{id}/delete/', '[email protected]_delete'); 

Это просто возвращает мой пользовательский ошибка 404 страница. В моей консоли нет ошибок (laravel's PHP). У меня есть такая же функция, чтобы удалить мою учетную запись, и она работает.

+0

К какому URL-адресу вы обращаетесь? – rmobis

+0

@Raphael_ это кнопка: ' Delete' – dinomuharemagic

+2

Вы пытаетесь перенаправить на 'NewsController @ delete', но то, что вы действительно хотите, это' AdminController @ news_delete'. – rmobis

ответ

2

Вы пробовали просто найти предмет, используя свой класс News?

public function news_delete($newsId) 
{ 
    $news = News::find($newsId); 
    $news->delete(); 
    return Redirect::back()->with('success', 'Your news post has been deleted.'); 
} 

Хотя действительно вы должны проверить, что оно было удалено, прежде чем вы сообщите об этом пользователю. Метод delete() возвращает количество затронутых строк, поэтому вы должны проверить, не превышает ли оно 0, когда оно вернется

+0

вы имеете в виду просто попробовать Новости :: find ($ newsId)? Кроме того, я должен поместить метод delete до или? на самом деле не проверял, больше ли он, когда он вернется, и это повлияло на мою систему удаления аккаунта. – dinomuharemagic

+0

извините. да .. должен быть просто 'find()' (будет обновляться выше!). 'delete()' должен появиться после, так как только тогда вы получите эту запись. – msturdy

+0

Он использовал класс 'News', уже использующий инъекцию зависимостей. Как это решение отличается? – Aloys

Смежные вопросы