0

YouTubeウィジェットを使用しようとしていますが、Silverstripe 3で問題が発生し、DataObjectSetがテンプレートに渡されないため、データをテンプレートに渡すことができません。すべての値はCMSで正しく表示されますが、渡されないのはテンプレートのみであるため、SS3のDataObjectSetに問題があるようです。私はかなり広範囲に検索しましたが、SS3での非推奨についての言及は見つかりません。

class YoutubeWidget extends Widget{
    static $title = "My favorite video";
    static $cmsTitle = "Your tube widget";
    static $description = "This widget can embed clips from youtube.com";

    static $db = array(
        "Width" => "Int",
        "Height" => "Int",
        "URL" => "Text",
        "Title" => "Text"
    );

    static $defaults = array(
        "Width" => 283,
        "Height" => 182
    );

    function getCMSFields(){
        return new FieldList(
            new NumericField("Width", "Video Width"),
            new NumericField("Height", "Video Height"),
            new TextField("URL", "Video URL"),
            new TextField("Title","Title or a note about this video")
        );
    }

    function GetVideoData(){
        $output = new DataObjectSet();
        $output->push(
            new ArrayData(
                array(
                    "Width" => $this->Width,
                    "Height" => $this->Height,
                    "URL" => $this->URL,
                    "Title" => $this->Title
                )
            )
        );      
        return $output;
    }
}

テンプレートにはどの変数も入力されていません。

<% control GetVideoData %>
    <object width="$Width" height="$Height">
        <param name="movie" value="$URL"></param>
        <param name="allowFullScreen" value="true"></param>
        <embed src="$URL" type="application/x-shockwave-flash" allowfullscreen="true" width="$Width" height="$Height"></embed>
    </object>

    <p style="text-align:center;">$Title</p>
<% end_control %>

コントロールを<%if GetVideoData%>でラップすると、コントロールにアクセスせず、何も返されないことを示します。これは、GetVideoData関数を変更して文字列を返すだけの場合でも発生します。すなわちreturn "asdf";

4

2 に答える 2

2

これはSS3の変更によるものです。テンプレートのコントロール呼び出しから「get」を削除する必要がありました。

<% if VideoData %>
    <% control VideoData %>
    <% end_control %>
<% end_if %>
于 2012-09-16T23:53:52.143 に答える
2

SS3は、<% loop VideoData %>または<% with VideoData %>の代わりにを使用し<% control VideoData %>ます。

于 2013-05-22T21:15:12.953 に答える