2016-12-29 25 views
5

Chcę przekazać wartość wejściową z jednego pliku ostrza do innego pliku ostrza.Pha laravel 5.3 przekazywanie wartości wejściowej z jednego pliku ostrza do innego pliku ostrza

Jestem nowicjuszem PHP Laravel i pojawia się błąd podczas próby jego użycia.

Myślę, że moja składnia jest tutaj błędna. Czy ktoś może pomóc?

channeling.blade:

<select class="form-control " name="fee" id ="fee"></select> 

To jest link do następnej strony, gdzie chcę wysłać wartość "opłaty":

<input type="hidden" value="fee" name="fee" /> 
<a href="{{ url('pay ') }}">Click to Channel</a></p> 

To jest mój web.php:

Route::post('pay', [ 
    'as' => 'fee', 
    'uses' => '[email protected]' 
]); 

To moja klasa kontrolera:

wiadomość
public function displayForm() 
    { 
     $input = Input::get(); 
     $fee = $input['fee']; 
     return view('pay', ['fee' => $fee]); 
    } 

Błąd:

Undefined variable: fee 
(View: C:\xampp\htdocs\lara_test\resources\views\pay.blade.php) 

pay.blade:

<h4>Your Channeling Fee Rs:"{{$fee}}"</h4> 
+0

Jaki komunikat błędu dostałeś? Być może 'channelController @ displayForm' powinno być' ChannelController @ displayForm'. – joshuamabina

+0

Niezdefiniowana zmienna: opłata (Widok: C: \ xampp \ htdocs \ lara_test \ resources \ views \ pay.blade.php) – sara99

+0

Niezdefiniowana zmienna: opłata (Widok: C: \ xampp \ htdocs \ lara_test \ resources \ views \ pay. blade.php) to jest moja pay.blade

Twoja opłata za przekazanie baterii: "{{opłata}}" "

sara99

Odpowiedz

0

Zmieniłem kod jak to i to działało ..

echanneling.blade

<input type="hidden" value="fee" name="fee" /> 
        <button type="submit" class="btn btn-submit">Submit</button> 

channelController.php

public function about(Request $request) 
    { 

     $input = Input::get(); 
     $fee = $input['fee']; 

     return view('pay')->with('fee',$fee); 
    } 

Web.php Route :: post ("/ pay", "channelController @ about");

0

Myślę, że można spróbować, można pomylić z url('pay ') puste:

zmiany kodu:

<a href="{{ url('pay ') }}">Click to Channel</a></p> 

do

<a href="{{ url('pay') }}">Click to Channel</a></p> 

Dalsze pytanie wymaga większej korekty, więc myślę, że najpierw trzeba to przejrzeć.

Możesz przejrzeć około how to build a form with laravel 5.3. Mam nadzieję, że to ci pomoże.

+0

Nie zadziała, ponieważ' a href' wyśle ​​żądanie 'get'. –

1

Należy użyć formularza, aby wysłać żądanie post, ponieważ a href wyśle ​​get. Usuń więc link i użyj formularza. Jeśli używasz laravel grupowych, można to zrobić:

{!! Form::open(['url' => 'pay']) !!} 
{!! Form::hidden('fee', 'fee') !!} 
{!! Form::submit() !!} 
{!! Form::close() !!} 

Można cenią wewnątrz kontrolera lub widoku request()->fee.

Albo można to zrobić:

public function displayForm(Request $request) 
{ 
    return view('pay', ['fee' => $request->fee]); 
} 
0

Musisz użyć formularza do wysłania danych, a następnie trzeba przesłać formularz na kliknij zdarzenie

<form id="form" action="{{ url('pay') }}" method="POST" style="display: none;"> 
    {{ csrf_field() }} 
    <input type="hidden" value="fee" name="fee" /> 
    </form> 

na zdarzenie click < się >

<a href="{{ url('/pay') }}" onclick="event.preventDefault(); 
    document.getElementById('form').submit();"> 
     Logout 
</a> 
0

tl; dr: Wierzę, że odpowiedź @ AlexeyMezenina jest najlepszą pomocą, jak dotąd.

Bieżące problemy:

  • Jeśli zdecydowaliśmy się użyć <a href="{{ url('pay') }}">Click to Channel</a>, należy użyć Route::get(...). Użyj Route::post(...) dla żądań przesłanych przez formularze.

  • Nie utworzono instancji Input. Input::get() potrzebuje Żądania formularza, aby istnieć. Tak więc komunikat o błędzie jest niezdefiniowany .

  • Wartość <input type="hidden" value="fee" name="fee"/> to zawsze będzie ciąg "opłata". (O ile nie ma jakiegoś magicznego zaklęcia rzucanego przez jakiś kod JavaScript).

  • laravel docs sugeruje, że podczas uzyskiwania dostępu do żądań HTTP wpisujesz klasę Request, aby przychodzące żądanie było automatycznie wprowadzane do Twojej metody kontrolera. Teraz możesz $request->fee. Wspaniale, prawda?


Droga naprzód:

  • BasicTaskList laravel 5,2 poradnik kick-zaczęła moja podróż laravel.