찾다

 >  Q&A  >  본문

Laravel 컨트롤러에서 주어진 함수를 초기화하는 방법

클래스에서 전체 코드를 다시 작성하지 않고 특정 변수를 초기화하여 클래스에서 재사용하고 싶습니다.

으아아아

위의 변수는 재사용하고 싶은 변수입니다.

생성자를 사용해 보았습니다

으아아아

하지만 브라우저에 블레이드 보기를 로드하면 Too少的参数到函数 AppHttpControllersProfileController::index(), 0 Passed이 표시됩니다.

도와주세요?

P粉404539732P粉404539732376일 전354

모든 응답(1)나는 대답할 것이다

  • P粉627027031

    P粉6270270312024-01-11 14:11:54

    개념이 헷갈려서 고민이신데요. 종속성 주입, 로컬 인스턴스 변수 및 경로 모델 바인딩 또는 경로 변수 바인딩이 가능합니다.

    종속성 주입을 위해서는 Laravel이 클래스 인스턴스를 제공해야 합니다. Laravel이 무언가를 로드하는 상황에서는 일반적으로 DI를 사용하여 알 수 없는 항목을 채우려고 시도합니다. 생성자의 경우 Laravel에 클래스의 새 인스턴스인 변수 이름 $profileInfo 下的 Profile을 생성자에게 제공하도록 요청합니다. 생성자에서 이 변수를 사용하지 않게 되므로 여기서 요청할 필요가 없습니다.

    다음(여전히 생성자에 있음) 로컬 변수 profileInfo를 설정하고 이를 컨트롤러 클래스 인스턴스에 할당합니다.

    경로가 index 方法时,存在 $profileInfo 변수 요청을 트리거하려고 시도하면 계속됩니다. Laravel은 이것이 무엇인지 전혀 모르고 경로의 어떤 것과도 일치하지 않습니다(문서의 경로 모델 바인딩 참조). 따라서 "매개 변수가 너무 적습니다."라는 메시지가 나타납니다. 이 변수가 존재하지 않으면 이전에 profileInfo를 설정해야 합니다.

    지역 변수를 유지하려면 다음과 같이 하세요.

    으아악

    여기서 고려해야 할 또 다른 제안이 있습니다...

    이것을 프로필이라고 하기 때문에, 적절한 프로필 기록을 사용자 모델에게 물어봐야 할 것 같습니다.

    으아악

    회신하다
    0
  • 취소회신하다