2016-05-24 7 views
3

ルートを使用せずにコントローラ内の関数を呼び出すことは可能ですか?セッションが追加された後、特定のページにリダイレクトされる以下の2つのパラメータで新しいルートを作成する必要がありますか?新しいルートまたはajaxでコントローラから関数を呼び出す別の方法は? Laravel 5.2、Ajax

route::get('addsesion/{session-name}/{session slug};

それはAjaxで可能なら、誰かが正しい方向に私を指すしてくださいすることができますか?

基本的には、リンクのajaxを持つコントローラから、addSession($session_name, $slug)という機能を呼び出して、特定のセッション名と現在のページのスラッグを保存しています。

クリックでこのaddSession機能を呼び出し、セッションデータを保存してから別のURLにリダイレクトする必要があります。例えば/seepartsには、保存されたすべてのセッションデータが表示されます。

新しいroute route::get('addsesion/{param1 - session-name}/{param2 - session slug}', [email protected]);を作成し、そのルートをajax URLとして使用する必要がありますか?または、コントローラの機能を使用する方法は他にありますか?

私の現在のコントローラー:

public function showAll() { 
    $parts = \DB::table() - > all(); 
    $data = [ 
    'parts' => $parts, 
    ]; 
    return view('partlist', $data); 
} 

public function showCpu($slug) { 
    // Specification query 
    $specs = \DB::table() - > select($select_columns) - > where('slug', $slug) - > first(); 
    $data = [ 
    'specs' => $specs, 
    'slug' => $slug 
    ]; 
    return view('part', $data); 
} 

//Add session - call this function 
public function addSession($session_name, $slug) {\ 
    Session::put($session_name, $slug); 
} 
} 

part.blade.php:

<html> 
@include('head.blade.php') 
</body> 
    //on .add-to-partlist click adds session name that is specified in html and the current slug of the page 
    <a class="add-to-partlist" href="/seeparts" >Add to partlist</a> 

</body> 
</html> 
+0

他のページ、エラーの場合は、リダイレクトしてエラーを表示しないでください、これは私がuだった場合のことです。 –

答えて

2

私はあなたのビューでコントローラ機能を結合Service Injection使用することができると思います。 おそらくそれを参照することができます、https://laravel.com/docs/master/blade#service-injection

例えば

:私は、メソッドからJSONを返すと、(あなたがルートを必要とするOFC)AJAXを使用すると、より良い解決策になる(単純)およびAJAX呼び出しの成功にあなたがにリダイレクトすることができると思い

<html> 
@include('head.blade.php') 
@inject('currentController', 'App\Http\Controllers\currentController') 
</body> 
    //on .add-to-partlist click adds session name that is specified in html and the current slug of the page 
    <a class="add-to-partlist" href="/seeparts" onClick="{{ $currentController->addSession($session_name, $slug) }}">HERE</a> 

</body> 
</html> 
+0

答えをありがとう。それは完全に働いた:) –

+0

また私は理解しやすいように私の質問を編集した人々に感謝したいと思います。 –

+0

@hulapouanusaka:それは大丈夫です!ちょうどあなた自身を冷やす – WeiYuan

関連する問題