2016-07-02 15 views
2

テンプレート上で教師関係がループしていますCoursePage.ssしかし、その関係をループしようとするとteachersの内部にCouresePage_details.ssが動作しません。間違ったことをしている。シルバーストライプの関係は詳細ページには表示されません

私は2つのモデルCoursesTeachers

  1. Courseを持っているが、多くのteachhers
  2. Teacher 1つのコースを持つことができます

Courses.php

class Courses extends DataObject 
{ 
    private static $many_many = array(
     'Teachers' => 'Teachers', 
    ); 
} 
を持つことができます

Teachers.php

class Courses extends DataObject 
{ 
    private static $belongs_many_many = array(
     'Courses ' => 'Courses ', 
    ); 
} 

CoursesPage.php

class CoursesPage extends Page 
{ 

} 

class CoursesPage_Controller extends Page_Controller 
{ 
    public static $allowed_actions = array(
     'details' 
    ); 

    // Show specific course 

    public function details(SS_HTTPRequest $request) 
    { 
     $c= Courses::get()->byID($request->param('ID')); 

     if(!$c) { 
      return $this->httpError(404, "Courses not found"); 
     } 

     return array(
      'Courses' => $c, 
     ); 
    } 

    // Courses list 

    public function CoursesList() 
    { 
     $c = Courses::get()->sort('Featured', 'DESC'); 

     return $c; 
    } 
} 

CoursesPage.ss

このファイルには、私だけでループコース、重要な何もありません。ここで私はコースと教師のリストをループします。ここで教師は詳細テンプレートに取り組んでいない完璧な作業をループしています。ここで

CoursesPage_details.ss

が問題です。 courseの詳細を表示すると、このコースに関連しているteachersをループしたいが、いつも私はNULLの返信Teachers does not existを得る。範囲外であるように見えます。

<section class="course-details"> 
    <h2>$Courses.Name</h2> <!-- Work --> 
    <p>$Courses.Descr</p> 

    <ul class="teachers-list"> 
     <% if $Teachers %> <!-- Not work here, but on CoursePage.ss work --> 
      <% loop $Teachers %> 
       $FirstName 
      <% end_loop %> 
     <% else > 
      Teachers does not exist 
     <% end_if %> 
    </ul> 
</section> 

答えて

4

代わり$Courses.Teachersを使用する必要があります...またはあなただけの<% with $Courses %>を使用して、コースにスコープを変更することができます。だからあなたのテンプレートは次のようになります。

<section class="course-details"> 
<% with $Courses %> 
    <h2>$Name</h2> 
    <p>$Descr</p> 

    <ul class="teachers-list"> 
     <% if $Teachers %> 
      <% loop $Teachers %> 
       $FirstName 
      <% end_loop %> 
     <% else > 
      Teachers does not exist 
     <% end_if %> 
    </ul> 
<% end_with %> 
</section> 

この理由は次のとおりです。あなたはCoursesという名前のパラメータとしてテンプレートにあなたのCourseのDataObjectを渡しています。このDataObjectはTeachersとの関係を持っているため、$Courses.Teachersを使用するか、上で概説したようにスコープを変更する必要があります。 デフォルトでは、あなたはまだCoursesPageの範囲にいます。

+0

ありがとうございます。 – Ivan

関連する問題