2014-02-15 159 views
1

我正在創建一個基本的CMS來教導自己Laravel和PHP的基礎知識。Laravel 4:獨特(數據庫)不驗證

我有一個'網頁'表,我正在存儲一個url_title。我希望這個URL標題由於顯而易見的原因是唯一的。但是,無論我做什麼來驗證它,都會失敗。無論如何它只是保存。我相信這很簡單。你能發現這個代碼有什麼問題嗎?

我也在使用前視圖,也沒有驗證。我已經嘗試了將硬編碼值作爲唯一方法的最後一個選項,並且它也失敗了。
http://anahkiasen.github.io/former/

http://laravel.com/docs/validation#rule-unique
國:獨特:表,列,除非,idColumn

這裏是我的控制器:

public function store() 
{ 
    $validation = Pages::validate(Input::all()); 

    if($validation->fails()) { 
     Former::withErrors($validation); 
     return View::make('myview'); 
    } else { 
     Pages::create(array(
      'title'    => Input::get('title'), 
      'url_title'   => Input::get('url_title'), 
      'status'   => Input::get('status'), 
      'body'    => Input::get('body'), 
      'seo_title'   => Input::get('seo_title'), 
      'seo_description' => Input::get('seo_description') 
     )); 

     //check which submit was clicked on 
     if(Input::get('save')) { 
      return Redirect::route('admin_pages')->with('message', 'Woo-hoo! page was created successfully!')->with('message_status', 'success'); 
     } 
     elseif(Input::get('continue')) { 
      $id = $page->id; 
      return Redirect::route('admin_pages_edit', $id)->with('message', 'Woo-hoo! page was created successfully!')->with('message_status', 'success'); 
     } 
    } 

} 

這裏是我的模型:

class Pages extends Eloquent { 

    protected $guarded = array('id'); 

    public static $rules = array(
     'id'   => 'unique:pages,url_title,{{$id}}' 
    ); 

    public static function validate($data) { 
     return Validator::make($data, static::$rules); 
    } 
} 

我已嘗試以下內容:

public static $rules = array(
    //  'id'=> 'unique:pages,url_title,{{$id}}' 
    //  'id'=> 'unique:pages,url_title,$id' 
    //  'id'=> 'unique:pages,url_title,:id' 
    //  'id'=> 'unique:pages,url_title,'. {{$id}} 
    //  'id'=> 'unique:pages,url_title,'. $id 
); 

任何想法?我與創造前者的人交談過。他無論如何也無法做出決定。他建議追蹤它以找到我們查詢Laravel使用哪些查詢來檢查唯一性,並嘗試直接在我的數據庫中運行以查看會發生什麼。我找不到查詢來執行此操作。有誰知道在哪裏追蹤它?

非常感謝

+0

在數據庫中使用一個唯一的列,以便重複失敗?....如果沒有任何工作,至少可以保持完整性。 – itachi

+0

謝謝itachi。我不確定我是否遵守。我試圖使用ID,這是唯一的測試,我想url_title也是唯一的。那有意義嗎? – T2theC

+0

如果id列是自動增量,那麼它將以任何一種方式都是唯一的(意味着不需要針對id進行測試)。所有你需要看看slug是否獨一無二。 – itachi

回答

0

您的規則應該是:

public static $rules = array(
    'url_title' => 'unique:pages,url_title,{{$id}}' 
); 

當我從你的代碼Input::get('url_title') 猜到你必須使用表單中使用的field名。