0

私は PHP と Silverstripe の初心者なので、質問に非常に簡単な答えがあれば申し訳ありません。
ギグのリストから日付ごとに最後の 8 項目を取得し、それらを逆 (昇順) に表示しようとしています。ここに私のコードがあります:

//my php function
function Tour() {
      if(!isset($_GET['start']) || !is_numeric($_GET['start']) || (int)$_GET['start'] < 1) $_GET['start'] = 0;
      $SQL_start = (int)$_GET['start'];
      $doSet = DataObject::get(
        $callerClass = "GigDetail",
        $filter = "",
        $sort = "Date ASC",
        $join = "",
        $limit = "{$SQL_start},8"
      );

      return $doSet ? $doSet : false;
    }

//my ss file
<% control Tour %>
    <p>$Place - $Date.Nice - $Address <a href="$Link">more &raquo;</a></p>
<% end_control %>

これにより、逆の順序で表示されますが、リストの一番下から表示されます。日付ごとに最新の8つのギグを取得し、それらを逆順に表示したいのですが。$_GET['start'] と関係がありますか?

前もってありがとう
マウロ

4

2 に答える 2

4

Silverstripe 3 を使用している場合は、次のように制御ループで DataLists を逆にすることができます。

PHP

function Tour() {
    $gigSet = GigDetail::get()->sort("Date DESC")->limit(8);

    return $gigSet ? $gigSet : false;
}

テンプレート

<% loop $Tour.Reverse %>
    <p>$Place - $Date.Nice - $Address <a href="$Link">more &raquo;</a></p>
<% end_loop %>

詳細: http://doc.silverstripe.com/framework/en/reference/templates

于 2013-10-01T22:51:29.370 に答える
1

関数を含むモデルを定義します。

class Gig extends DataObject {
    static $db = array(
        'SomeField' => 'Text',
        'Date' => 'Date'
     );
}

class Gig_Controller extends Controller {
        public function Tour() {
            return Gig::get()->sort('Date ASC')->limit(8);
        }
}

この方法で PHP の $_GET 変数を直接使用しないでください。アプリケーションを SQL インジェクション攻撃にさらすことになります。Silverstripe では、コントローラーを拡張するクラスで を使用できます$this->getRequest()->requestVar('varName')。これにより、GET および POST 変数がサニタイズされます。

于 2013-10-02T00:17:56.120 に答える