2017-12-01 11 views
1

私はLaravelに新しくて、私はlaravelで動作するようにGoogleマップのAPIを取得する方法についていくつかの調査を行ってきました。 私は既に刃物をデータベースからフェッチするようにしました。刃を使用するときには、2つの中括弧の間にvarsを入れて、ウェブページ上にそれらをエコーし​​ます(この{{$私は、次のスニペットコードで、Locationテーブルのデータをphp varに渡す必要があり、渡す方法がわからないという問題があります。それは私がそれをした方法ですが、明らかにうまくいきませんでした。直接テキストとして渡すだけです... この$ adress = '{{$ training-> Location}};私は結果としてこの文字列を取得します:%7B%7B%24training-%3Location%7D%7D googleMapsApiは正しいアドレスとして認識されません。ここでLaravelのPHPにブレード変数を渡すことはできますか?

は、コードスニペットです: `私はあなたが私の問題を理解してほしい

  <div> 
        <H4>Location: {!!$training->Location!!}</H4> 

      </div> 
      <div> 
      <H4>Starting Date: {!!$training->DateTime!!} </H4> 

      </div> 

      <?php 
        $adress = '{{$training->Location}}'; 

        //$adress = 'Universitätsring 1, 1010 Wien'; 
        $adress = urlencode($adress); 
        $url = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' . $adress . '&sensor=true'; 
         $xml = simplexml_load_file($url); 
         $status = $xml->status; 
         if ($status == 'OK') { 
          $latitude = $xml->result->geometry->location->lat; 
          $longitude = $xml->result->geometry->location->lng; 

      } ?>` 

は、申し訳ありません私の英語が最善ではありませんが、あなたが理解していない場合、私はいつもスクリーンショットやより良い、について説明を提供することができ

+2

ブレードの構文を削除するだけです。これは正常なPHP変数として正常に動作します。 '$ adress = $ training-> Location;' – aynber

+0

は超高速応答のための魅力のように機能します、私は今日何かを学びました:)ありがとうございました –

答えて

0

簡略化されたワークフローは次のとおりです。ブレードコードが同等のPHPに変換された後、PHPコードがサーバー側で実行され、結果のHTMLがクライアントに渡されます。

Bladeを使用しています。なぜなら、(これはおそらく構文がはるかに優れているためですが)何らかの暗黙のLaravel制約のためではないからです。 「Bladeで利用可能な」変数は、プレーンなPHPでも利用できます。

$address = $training->Location; 

$address = '{{$training->Location}}'; 

の交換

は完全に「法的」で、あなたはプレーンなPHPのために必要としている考慮すれば行く方法でなければなりません。

+0

ありがとう、今私はその件について明らかにしました!あなたの精巧な答えをよろしくお願いします。 –

+0

@AbdelKdjブレードファイルにphpを使用することはお勧めできません。なぜあなたはブレードのコアデザインの実践に反対しますか?私はブレードを使用して停止し、PHPファイルを代わりに使用するか、適切な場所(コントローラ)にコードを移動することをお勧めします。 – tprj29

+0

@AbdelKdjソフトウェア設計の観点からは、PHPブロックがBladeファイル内にないことは完全に同意します。 – Valdrinit

1

提案の回答は機能しますが、これは良い設計方法ではありません。

あなたのブレードファイルでは、値を表示するために絶対に必要な以外のanny PHPコードではいけません。ブレードファイルに書き込んだコードは、コントローラーに配置する必要があります。私はあなたがLaravelが構築しているMVCの概念に精通することをお勧めします。 laravelドキュメント(https://laravel.com/docs/5.5/views)から:

ビューは、アプリケーションによって提供されるHTMLが含まれているし、あなたのプレゼンテーションロジックからあなた コントローラ/アプリケーションロジックを分離します。幾何学的な場所は、少なくともではないあなたのビューであなたのコントローラ(またはいくつかのヘルパークラス)である必要があり得るためにコールアウトを作る

。 これは良い読書でもあります:https://scotch.io/@ARKASoftwares/mvc-development-the-need-of-the-changing-world

関連する問題