2013-07-29 18 views
8

Tôi có một bộ điều khiển có phương thức. Mã quá dài trong phương pháp, vì vậy tôi đã đặt một số mã trong các phương thức riêng tư khác, để các phương thức trở nên dễ hiểu và không tạo ra một mớ hỗn độn.Chuyển hướng Laravel từ phương thức riêng

Bây giờ, khi tôi truy cập phương thức công khai từ URL, tùy thuộc vào thông số, nó sẽ gọi một phương thức riêng tư cụ thể để xử lý công việc. Sau khi công việc được xử lý, tôi muốn chuyển hướng đến một URL, nhưng chuyển hướng không hoạt động.

Một mẫu mã của tôi là như sau:

class SomeClass extends BaseController{ 
    public function getMethodName() 
     { 
      //check the params and choose a private method to call 
      $this->processJob(); 
     } 
    private function processJob() 
    { 
     //process the job and redirect at the end 
     return Redirect::to('some/url'); 
    } 
} 

Vấn đề là, chuyển hướng trên không hoạt động. Tại sao vậy? Trong Codeigniter, khi bạn sử dụng redirect, nó hoạt động ở nơi mà nó được gọi.

Nếu mẫu mã trên không đúng cách để làm điều đó, sẽ đánh giá cao nếu ai đó có thể chỉ cho tôi cách thực hiện. Cảm ơn.

+0

nó sẽ hoạt động - Tôi sử dụng loại mã đó mọi lúc. bạn đang nhận được bất kỳ lỗi nào? điều gì sẽ xảy ra nếu bạn di chuyển chuyển hướng đến đầu processJob()? – Laurence

+0

Nó không hoạt động. Tôi đã xóa tất cả các mã khác trong processJob(), chỉ giữ lại dòng chuyển hướng đó, vẫn không hoạt động. Nhân tiện, tôi đang sử dụng L4. – WebNovice

+0

Bạn có chắc chắn processJob đang được gọi? thử dd ('hi') trong processJob - bạn có thấy 'hi' không ?? – Laurence

Trả lời

14

Bạn cũng phải trả lại tiền từ số $this->processJob().

class SomeClass extends BaseController{ 
    public function getMethodName() 
    { 
     //check the params and choose a private method to call 
     return $this->processJob(); 
    } 

    private function processJob() 
    { 
    //process the job and redirect at the end 
    return Redirect::to('some/url'); 
    } 
} 
+0

Cảm ơn, hiện tại công cụ này hoạt động. Đến từ Codeigniter, điều này có vẻ kỳ lạ. – WebNovice

+1

nhìn vào nó như thế này: Laravel gọi chức năng điều khiển của bạn và mong đợi một cái gì đó trong trở lại, vì vậy nó biết phải làm gì tiếp theo. Trong mã của bạn, 'return Redirect :: to ('some/url');' được trả về bất cứ nơi nào mà hàm riêng của bạn được gọi, nhưng nó không tới được Laravel. Có, âm thanh hơi ngu ngốc, nhưng đó là cơ bản những gì sẽ xảy ra. – mgrueter

2

Bạn có thể thử chuyển hướng đến một trang khác từ chức năng công cộng của bạn, theo kết quả hàm riêng của bạn (tôi nghĩ đó là giải pháp tốt hơn để làm cho mã của bạn dễ đọc hơn). Nhưng nó có thể hoạt động giống như bạn đã viết ...