2017-02-27 1 views
0

車のテーブルに車をリストするフォームを作成しようとしていて、クリックすると、選択した車のデータ($modelesc)を返すDBクエリに基づいた別のフォームに送信されます。このフォームは、データを「注文」テーブルに送信します。"パーズエラーをデバッグする方法:構文エラー、予期しない '<'、期待して ']'" Laravel?

私は今orders.blade.phpに次のエラーを取得しています:

Parse error: syntax error, unexpected '<', expecting ']'

私は「<」を取得していますなぜ私は理解していません。私はコードでこれを見ていない!これは、これまでの私のコードです

CarController

function catalog() { 
    $cars = DB::table('cars')->get(); 
    return view('catalog', compact('cars')); 
} 

function orders($modelesc=null) { 
    $cars = DB::table('cars')->where('Model', '=', '$modelesc'); 
    return view('orders', compact('cars')); 
} 

Catalog.blade.php

@foreach($cars as $car) 
    {!! Form::open(array('action' => '[email protected]', 'method' => 'GET')) !!} 
    {!! Form::hidden('$modelesc', $car->Model) !!} 
    {!! Form::submit($car->Model) !!} 
    {!! Form::close() !!}          
@endforeach 

Orders.blade.php

{!! Form::open(array('action' => 'index', 'method' => 'POST')) !!} 
    {!! Form::text('Model', $car->Model) !!} 
    {!! Form::hidden(users_id, Auth::user()->id) !!} 
    {!! Form::hidden(Fabrication_date, date(Y-m-d)) !!} 
    {!! Form::select('Colour', [ 
     @foreach($colours as $colour) 
      '$colour->Colour' => '$colour->Colour' 
     @endforeach 
    ]) !!} 
    {!! Form::hidden(Order_status_id, '1' !!} 
{!! Form::close() !!} 

これはordersテーブルの構造です。 * _idフィールドは他のテーブルから来ており、フォームのいくつかの値に関連するエントリ(id、users_id、Model、Fabrication_date、Colour_id、Order_status_id)を入力したいと思います。

+0

あなたは定数として動作するが、確かにそうではない変数宣言を持つフォーム要素は '{!! Form :: hidden(users_id、Auth :: user() - > id)!!} 'それは' $ users_id'ではないでしょうか? – Ohgodwhy

+1

私は 'Form'ファサードの経験はあまりありませんが、問題はselectの中の' @ foreach'ステートメントに入れられていると思いますか?背後では、 '@ foreach'ステートメントは' <?php foreach ... 'でこれを挿入し、隠された '<'がどこから来るのかを指定します。 – camelCase

+0

どのバージョンのLaravelをお使いですか? – Karl

答えて

0

$ cars = DB :: table( 'cars') - > where( 'Model'、 '='、 '$ modelesc');を変更してみてください。 $色がコレクションである場合

{!! Form::hidden('users_id', Auth::user()->id) !!} 

{!! Form::hidden('Fabrication_date', date('Y-m-d')) !!} 

{!! Form::hidden('Order_status_id', '1') !!} 

次に、あなたが次の操作を実行できます。

$cars = DB::table('cars')->where('Model', '=', $modelesc)->get(); 
2

は、まずあなたが引用符内のフォーム名をラップする必要があり、注文状況のIDも閉じ括弧がありませんでしたLaravel 5.4(私はあなたが使用しているどのバージョンが不明です)

{!! Form::select('Colour', $colours->pluck('Colour')) !!} 

あなたはLaravel 5.1またはそれ以前を使っているのであれば、あなたは次の操作を行います:

{!! Form::select('Colour', $colours->lists('Colour')) !!} 

これは、listsメソッドが5.2で削除されたためです。

@pseudoanimeも彼の答えと正解で、データベースの呼び出しは、あなたのCarControllerで

+0

を使っています。 $ colorsは、 "orders"テーブルに接続する "colors"テーブルの値です。 "Parse error:構文エラー、予期しない ';'、expecting '、' or ')'" – Adato

0

ご注文方法を追加get方法は、あなたが思うだろう何に$carsを設定していない必要があります。 get()を呼び出すことなく、配列の代わりにBuilderのインスタンスになります!さらに、$modelescの代わりに、モデルが文字列 "$ modelesc"に等しい車だけを取得しています。

さらに、orders.blade.phpファイルでは、$coloursという変数を参照しているように見えますが、それはCarControllerで渡されません。

は、以下のいずれかにご orders方法を変更

public function orders($modelesc = null) 
{ 
    $cars = DB::table('cars') 
     ->where('Model', $modelesc) 
     ->get(); 

    $colours = DB::table('colours')->get()->pluck('Colour'); 

    return view('orders', compact('cars', 'colours')); 
} 

はまたあなたorders.blade.phpファイルでのごForm::selectのコールに問題があります。 Bladeのテンプレート指示文(@foreach@endforeach)は、Bladeファイルの "HTML"部分のみに適用されます。 CarControllerの色のコレクションでpluck()と呼んだので、そのメソッドに対しては$coloursを渡すことができます。

{{-- Incorrect --}} 
{!! Form::select('Colour', [ 
    @foreach($colours as $colour) 
     '$colour->Colour' => '$colour->Colour' 
    @endforeach 
]) !!} 

{{-- Correct --}} 
{!! Form::select('Colour', $colours) !!} 

(引用符の付いた文字列ではなく)フォームビルダーでも定数を使用しているようです。これらは文字列でなければなりません。

+0

コードを変更しました。今すぐメッセージが出ます:Parse error: "構文エラー、予期しない ';'、expecting '、' or ')on orders.blade.php – Adato

+0

@Adato私は' {!! Form :: hidden( 'Order_status_id'、 '1')!!} ';その変更を加えてやり直してください。それでもやっていないのであれば、あなたの質問を編集してください(http://stackoverflow.com/posts/42493944/edit)。 –

+0

はい、そのかっこはありませんでした。現在、注文は機能していますが、意図どおりではありません。カタログからデータを受け取っていません。 $ cars-> count()は0です – Adato

関連する問題