1

これは単純な問題かもしれませんが、私の頭を台無しにしています。

問題は、fuelPHP、RedBean、Twigを使ってプロジェクトを行っていることです。すべてがうまく機能しているようで、私はこのフレームワークで本当にうまく進んでいます。

まだ解決策が見つからないという問題は{{object.property}}、redbeanからオブジェクトを取得した場合にTwigがアクセスできないことです。自分のMVCフレームワークを使用すると、まったく同じコード(Twig + Redbeanも)が機能するため、これはまったく奇妙なことです。

例えば

public function action_messages() {
    $room = \Uri::segment(3);
    $this->data['messages'] = \R::find('message', 'room = ? ORDER BY id', array($room));
    
    // This is working because it's converting each row to array
    /*foreach($this->data['messages'] as $id => $message)
        $this->data['messages'][$id] = $message->export();*/
    
    return \Response::forge(\View::forge('chat/messages.twig', $this->data));
}

エクスポートをオブジェクトとしてではなく配列として取得した場合、問題は期待どおりに機能します。

{%for message in messages%}
     <b>{{message.user.id}}</b>{{message.datetime}}: {{message.text}}
{%endfor%}

私はこれで本当に迷っています。だから私は可能な限りの助けをいただければ幸いです。

編集:(詳細)

入れたら

{%for message in messages%}
{{message}}<br/>
{%endfor%}

この出力はVarから取得します。

{"id":"23","text":"A test","room":"1","datetime":"2012-10-05 15:32:36","user_id":"1"}
4

2 に答える 2

3

私はあなたのためにTwigを調べましたが、それはあまりにも複雑で(不必要です)飛び込むことができません。私はTwigについて知りません。しかし、RedBeanPHPの作者によって書かれたテンプレートエンジンを使おうとしましたか?

http://gabordemooij.com/se/

簡単だ。しかし、RedBeanPHPのように異なります。Gaborは常に異なります;)。

于 2012-10-05T20:58:41.873 に答える
3

ついに私はそれを動かしました。

問題は、FuelPHPフレームワークのTwig構成にありました。

auto_encodeパラメーターは、オブジェクトプロパティの場合、jsonから配列への変換を行います。したがって、falseに設定する必要があります(デフォルトではtrueです)。

このようなものを取得するように構成を調整します。

// TWIG ( http://www.twig-project.org/documentation )
// ------------------------------------------------------------------------
'View_Twig' => array(
    'include' => APPPATH.'vendor'.DS.'Twig'.DS.'Autoloader.php',
    'auto_encode' => false, // Remember to set this to false
    'views_paths' => array(APPPATH.'views'),
    'delimiters' => array(
        'tag_block'     => array('left' => '{%', 'right' => '%}'),
        'tag_comment'   => array('left' => '{#', 'right' => '#}'),
        'tag_variable'  => array('left' => '{{', 'right' => '}}'),
    ),
    'environment' => array(
        'debug'                => false,
        'charset'              => 'utf-8',
        'base_template_class'  => 'Twig_Template',
        'cache'                => APPPATH.'cache'.DS.'twig'.DS,
        'auto_reload'          => true,
        'strict_variables'     => false,
        'autoescape'           => false,
        'optimizations'        => -1,
    ),
    'extensions' => array(
        'Twig_Fuel_Extension'
    ),
),

そしてそれは魅力のように機能します:)

于 2012-10-06T12:05:20.567 に答える