2011-07-13 5 views
0

コントローラ内の現在の関数の変数と対応するビューファイルで使用するユーザ関数を別の関数から取得する方法はありますか?私は以下のコードがある...別のビューファイルにビューファイルの変数を渡す意味Cakephpはコントローラ変数を別の関数変数から継承しています

申し訳ありませんが、みんな...

function get_random_color() 

{

$ C = ""; ($ i = 0; $ i < 6; $ i ++) { $ c。= dechex(rand(0,15)); } 返信 "#$ c"; } $ i = 0; //デバッグ($ trips); foreach($ tripとしての$ trip){ $ color = get_random_color();

$numItems = count($trip['trip']['coords']); 
if($numItems > 3){ 
    $x = 0; 
    echo 'var flightPlanCoordinates'.$i.' = ['; 
    foreach($trip['trip']['coords'] as $coords) { 

     if($x+1 == $numItems) { 
      echo 'new google.maps.LatLng('.$coords['latitude'].','.$coords['longitude'].') '; 
     } 
     else { 
      echo 'new google.maps.LatLng('.$coords['latitude'].','.$coords['longitude'].'), '; 
     } 
     $x++; 
    } 

    /* 
    for($x = 0; $x<sizeof($trip['trip']['coords']); $x++) { 
     echo 'new google.maps.LatLng('.$trip['trip']['coords']['latitude'].','.$trip['trip']['coords']['longitude'].'), '; 
    }*/ 


    echo ']; '; 
    echo 'var flightPath'.$i.' = new google.maps.Polyline({ 
    path: flightPlanCoordinates'.$i.', 
    strokeColor: "'.$colour.'", 
    strokeOpacity: 1.0, 
    strokeWeight: 4 
    });'; 

    echo 'flightPath'.$i.'.setMap(map);'; 

    $i++; 
} 

}

+1

MVCパターンを破るので、ビュー内で多くのロジックを実行するのは良いスタイルではありません。コントローラやモデルでそれをやり直してみて、できるだけシンプルに表示してください。 – Young

+0

ここでjavascriptにPHP変数を渡そうとしていますか?コントローラーで行う必要がある操作を行い、jsonオブジェクトを作成し、それをビューに渡してjavascriptで解析するのはなぜでしょうか? – Matt

答えて

0

それがそのデータを取得するために遅い方法と考えられているが、あなたは、requestActionを行うことができます。あなたがもっと詳細を与えるなら、私はあなたにもっと良い答えを与えることができるかもしれません。

$this->requestAction('/posts/list'); 

ここrequestActionsの詳細:あなたはこのような状況でグローバル変数が必要な場合は、要求アクションは悪い選択であるべきhttp://book.cakephp.org/view/991/requestAction

+0

'requestActionをキャッシュせずに使用すると、パフォーマンスが低下する可能性があります。コントローラやモデルで使用することはほとんどありません。 – Young

+0

最初の行には同意して書いていますが、1つのコントローラから別のコントローラに1つの変数を移動することはやや曖昧です。 – Matt

0

使用Configure classを。

+0

これは彼が最初に他のコントローラにいる場合にのみ機能します。動的データを必要とするものなら、これはうまくいかないでしょう。私は記事の中にいるので、これをもっと解釈し、タグの中に関数があるタグから何かが必要です。 configureを間違って使用していない限り、セッション変数を簡単に設定できます。 – Matt

+0

@マット、私はまだデータが動的であってもリクエストアクションは避けることができると思います。あなたのケースでは、ポストコントローラのタグモデルを使用してデータを取得できるように、タグのモデルに関数を配置できます。 – Young

+0

興味深い。私はもっ​​とconfigureクラスで遊ぶ必要があります。私はデバッグトグルやそれ以外の場合には頻繁に使用します。 – Matt

関連する問題