단일 모델의 모든 행을 포함하는 선택 메뉴가 생성됩니다.이 작업을 수행하는 3 가지 솔루션이 있습니다.하지만 힘든 결정을 내리고 있습니다. 어느 것이 가장 합리적인 지, MVC/Laravel 모범 사례를 따릅니다.컨트롤러 내부에 논리 배치 뷰와 모델 비교
모델 상태
states table:
id abbr name
1 AL Alabama
2 AK Alaska
3 AZ Arizona
4 AR Arkansas
etc.
솔루션 # 1 : 보거나 laravels를 사용하여 선택 메뉴를 생성하여 전달하는 제어부의 상태 어레이를 생성하는 로직을 수행 제어기 모델에서 모든 상태 검색 배열로 전달 된 폼 클래스.
* 컨트롤러 : my_controller.php *
public function get_index()
{
$states = State::all();
foreach ($states as $state)
{
$states_array[$state->id] = $state->name;
}
return View::make('my_view')->with('states_array',$states_array);
}
* 전망 : my_view.php *
{{ Form::select('state_id',$states_array); }}
솔루션 # 2 :이 컨트롤러 모델에서 모든 상태를 검색, 패스 조회 할 상태 모델을 검색하고, 상태 배열을 생성하는 로직을 수행하고 결과 배열과 함께 laravels 양식 클래스를 사용하여 선택 메뉴를 생성합니다.
* 컨트롤러 : my_controller.php *
public function get_index()
{
$states = State::all();
return View::make('my_view')->with('states',$states);
}
* 전망 : my_view.php *
@foreach ($states as $state)
$states_array[$state->id] = $state->name;
@endforeach
{{ Form::select('state_id',$states_array); }}
솔루션 # 3 :가) (AN all_array 추가 (또는 선택적으로 확장 all) 메소드를 모든 상태 레코드를 가져 오는 상태 모델에 연결하고, 논리를 작성하여 배열을 작성한 다음 결과 배열을 리턴합니다. 컨트롤러에서 메서드를 호출하고 뷰에 전달합니다. 배열로 전달 된 laravels 폼 클래스를 사용하여 선택 메뉴를 생성하십시오.
* 모델 : my_model.php *
public static function all_array()
{
$states = self::all();
foreach ($states as $state)
{
$states_array[$state->id] = $state->name;
}
return $states_array;
}
* 컨트롤러 : my_controller.php *
public function get_index()
{
$states = State::all_array();
return View::make('my_view')->with('states',$states);
}
* 전망 : my_view.php *
{{ Form::select('state_id',$states); }}
그래서 이들 중 어떤 3 솔루션이 가장 적합하며 MVC/Laravel 모범 사례를보다 면밀히 따릅니다. 선택적으로 위에 설명 된 3보다 나은 솔루션이 있습니까?
모든 답변을 주시면 감사하겠습니다.
일반적으로 모델을 여러 부분으로 나눕니다. 그 중 하나는 논리적 인 부분입니다. 유효성 검사, 데이터베이스 쿼리 및 필요한 경우 다른 요소도 포함됩니다. # 4로 새로운 솔루션을 제안 하겠지만 논리를 별도의 클래스에 두는 것이 좋습니다. (나중에 더 유지 보수 가능하게 만든다). – itachi
@itachi 나에게 보여줄 수있는 어딘가의 예가 있습니까? – Yev