2014-02-15 3 views
1

나는 Laravel과 PHP의 기초를 가르치기 위해 기본 CMS를 만들고 있습니다.Laravel 4 : 고유하지 않음 (데이터베이스) 유효하지 않음

'페이지'테이블이 있으며 url_title을 저장하고 있습니다. 분명한 이유로이 URL 제목이 고유해야합니다. 그러나, 그것을 검증하기 위해 무엇을 하든지 실패합니다. 그것은 어쨌든 저장합니다. 나는 그것이 단순한 것이라고 확신한다. 이 코드의 문제점을 발견 할 수 있습니까?

또한 뷰에서 Former를 사용하고 있는데이 뷰도 유효성을 검사하지 않습니다. 고유 한 메서드에서 마지막 옵션으로 값을 하드 코딩하려고 시도했지만 실패했습니다.
http://anahkiasen.github.io/former/

http://laravel.com/docs/validation#rule-unique
미국 : 독특한 :

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

I : 여기

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

} 

내 모델 : 제외 테이블, 열, idColumn

여기

내 컨트롤러입니다 다음을 시도 :

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이 독창성을 검사하고 DB에서 직접 실행하여 어떤 일이 발생하는지 확인하기 위해 Laravel이 사용하는 쿼리를 찾기 위해이를 추적 할 것을 제안했습니다. 이 작업을 수행 할 쿼리를 찾을 수 없습니다. 누군가 그것을 추적 할 위치를 알고 있습니까?

많은 감사

+0

데이터베이스에서 고유 한 열을 사용하여 복제가 실패합니다 ... .... 아무 것도 작동하지 않으면 최소한 무결성을 유지할 수 있습니다. – itachi

+0

감사합니다. 따라갈 지 모르겠습니다. 나는 고유 한 ID를 사용하여 테스트를하고 있으며 url_title도 고유해야합니다. 말이 돼? – T2theC

+0

id 열이 자동 증가이면 어떤 방식 으로든 고유하게됩니다 (id에 대해 테스트 할 필요가 없음을 의미). 슬러그가 고유한지 여부를 확인해야합니다. – itachi

답변

0

규칙은 다음과 같아야합니다

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

내가 양식에 사용되는 field 이름을 사용할 필요가 코드 Input::get('url_title') 에서 추측으로.