2014-11-18 5 views
0

나는 꽤 프로그래밍 (아직 학생)에서 새롭고 Laravel에서 정말로 새로운 편이다. 나는 소방관을위한 엑스트라 넷을 만들어야하기 때문에 대부분 내 DB에서 필요한 기록은 개인 데이터, 의제 및 그런 것들입니다. 어쩌면 내가 잘못보고있다. 이런 식으로 프로젝트를 만들고 싶다.Laravel : 컨트롤러에서 다른 변수로 변수를 전달하려면 어떻게해야합니까?

BaseController __constructor에는 모든 뷰에서 필요한 데이터를 가져올 논리가 포함되어있다. 나는 firefighters'agenda에서 데이터를 가져 오기 위해 다른 클래스, AgendaController을 (BaseController을 확장 할 것이다)를 사용하고 싶습니다하지만 사실 나는 '보기 :: 주'코드

View::share('milite', $milite); 
View::share('agenda', $agenda); 
View::share('log_accessi', $log_accessi); 
View::share('data_import', $data_import); 

에 내 모든 변수를 반환합니다. 그렇게하기 위해 BaseController에서 AgendaController로 변수 $ milite를 전달해야합니다.

나는 그걸하는 법을 정말로 모른다! 누군가 제발, 설명해 줄 수 있니? 영어가 제 모국어가 아니기 때문에 제 문제를 이해하시기 바랍니다. 정말 고맙습니다!

사라

답변

0

는 컨트롤러를 통해 변수를 공유하는 방법에는 여러 가지가 있습니다

  1. 당신이 간단하고 사용 다른 컨트롤러에서 변수 $ Milite가 그랬던 것처럼 뷰에서 변수를 공유하는 경우

    . 괜찮을거야.
  2. 기본 클래스를 확장하는 모든 클래스 중에서 변수를 사용할 수 있도록 기본 클래스에 정적 변수를 정의 할 수 있습니다.
  3. AgendaController의 생성자에서 컨트롤러를 구성하기 위해 firefighters'agenda를 매개 변수로 전달하기 만하면됩니다.
  4. App :: make ('firefighters'agenda') -> (귀하의 매개 변수)로 AgendaController의 firefighters'agenda 메소드를 호출하기 만하면됩니다. 이런 식으로 다른 컨트롤러의 값을 전달하고 메서드를 호출 할 수 있습니다.
0

올바른 방법이 아닙니다. 우선, BaseController의 생성자에서 모든 종류의 로직을 갖게되면 결국 필요에 따라 모든 요청이 이러한 논리 문을 거쳐야하므로 응용 프로그램의 속도가 느려집니다. 실제로 컨트롤러는 들어오는 HTTP 요청을 처리하고 응답을 제공해야하기 때문에 컨트롤러가 서로 상호 작용하지 않아야합니다.

은 어쨌든 BaseController을 확장하고 있기 때문에, 적어도 당신의 AgendaController에 다음 BaseController 생성자에서 당신의 논리를 이동하고 BaseController

의 공용 방법
class BaseController extends Controller 
{ 


    public function fillView() 
    { 
     $data = array('someData' => 'data'); 
     return $data; 
    } 

를 이동 그리고, 비록 당신에게 대답을하려면 상속을 통해 공용 메서드에 액세스 할 수 있습니다.

<?php 


    class AgendaController extends BaseController 
    { 

     public function showAgenda(){ 
       $dataFromBaseController = $this->fillView(); 
       ... 
     } 

    } 

다시 말하지만 어떻게해야합니까? 일반적으로 당신이하는 일은 다른 클래스의 메소드 (예를 들어, 서비스에 액세스하거나 DB에 액세스하는 경우 리포지토리)에 논리 관련 항목을 이동 한 다음 laravel의 종속성 주입 컨테이너를 사용하여 컨트롤러의 해당 메소드에 액세스하도록하는 것입니다 .

관련 문제