2014-06-16 2 views
2

기본적으로 중첩 된 리소스의보기에서 경로 매개 변수에 액세스하는보다 효율적이거나 적절한 방법이 있는지 확인하려고합니다. 아래 코드는 경로에서 모든 매개 변수를 잡아 내며 컨트롤러의 인덱스 메소드에 /schools/1/classes/2/teachers/4/assignments 을 입력 한 다음 뷰를 만들고 모든 매개 변수를 전달하므로 뷰 내에서 사용할 수있는 양식과 링크를 만들 수 있습니다. 동일한 경로 형식 & 매개 변수. 더 좋은 방법이 있습니까? Laravel Pastehtml 양식 및 URL의 Laravel 중첩 리소스 경로 매개 변수

// 
//  app/routes.php 
//------------------------------------------------------ 

Route::resource('schools.classes.teachers.assignments', 'AssignmentsController'); 


// 
//  app/controllers/AssignmentsController.php 
//------------------------------------------------------- 

public function index($school_id,$class_id,$teacher_id) 
{ 
    $routes = array($school_id,$class_id,$teacher_id); 
    $assignments = $this->assignment->all(); 

    return View::make('assignments.index', compact('assignments')) 
      ->with('routes', $routes); 
} 

// 
//  app/views/assignments/index.blade.php 
// ------------------------------------------------------------ 

<p>{{ link_to_route('schools.classes.teachers.assignments.index', 'All Assignments', array($routes[0],$routes[1],$routes[2])) }}</p> 

// 
// app/views/assignments/edit.blade.php 
// ------------------------------------------------------------- 

{{ Form::model($assignment, array('method' => 'PATCH', 'route' => 'schools.classes.teachers.assignments.update', $routes[0],$routes[1],$routes[2],$route[3]))) }} 




- 

답변

0

당신은 항상 매개 변수를 전달해야하고이 간단하지만 내가 대신 다음과 같이 연관 배열을 사용하는 경우가 더 좋을 거라 생각 :

$routes = compact('school_id', 'class_id', 'teacher_id'); 

그래서이 될 것이다 :

$routes = array(
    'school_id' => $school_id, 
    'class_id' => $class_id, 
    'teacher_id' => $teacher_id 
); 

그래서, 당신은 사용할 수 있습니다

{{ Form::model($assignment, array('method' => 'PATCH', 'route' => 'schools.classes.teachers.assignments.update', $routes['school_id'], ['class_id'], ['teacher_id']))) }} 
,

읽기 쉽고 이해하기 쉽습니다.