2013-05-16 25 views
1

我使用的是Perch,這是一個php CMS。我在這裏問這個問題,因爲它看起來像一個普通的PHP問題。鱸魚CMS過濾

基本上,我使用的是搜索頁面上過濾器:

perch_content_custom('Jobs', array(
    'page'=>'/view-job.php', 
    'template'=>'_job_list.html', 
    'filter' => array(
     array(
      'filter'=>'job_subject', 
      'match'=>'eq', 
      'value'=> $_GET['subject'] 
      ), 

     array(
      'filter'=>'job_term', 
      'match'=>'eq', 
      'value'=> $_GET['term'] 
     ), 
    ) 
)); 

我只想過濾如果GET字符串具有值, - 所以,如果指定job_subject時,應用過濾器 - 但是我知道我不能使用IF語句,我不確定在PHP中的替代?

+0

而不是使用'$ _GET ['subject']'可以有許多不同的值,通過使用'((bool)$ _ GET ['subject'])?「has_subject」:「no_subject」分配。 – Orangepill

回答

0

這個什麼:

$filters = array(); 

if(!empty($_GET['subject'])) { 
    $filters[] = array(
     'filter'=>'job_subject', 
     'match'=>'eq', 
     'value'=> $_GET['subject'] 
    ); 
} 

if(!empty($_GET['term'])) { 
    $filters[] = array(
     'filter'=>'job_term', 
     'match'=>'eq', 
     'value'=> $_GET['term'] 
    ); 
} 

perch_content_custom('Jobs', array(
    'page'=>'/view-job.php', 
    'template'=>'_job_list.html', 
    'filter' => $filters 
)); 

但我想這不會是一個很好的方法時會有許多條目...過濾器如果CMS不支持一些更好的過濾條件我猜它不是一個很好的解決方案...

0

不要擔心:如果值字段爲空,Perch將匹配所有值,就好像該過濾器不存在一樣。

而不是IF語句,您可以在這裏輕鬆使用「三元運算符」(?:)。

舉個例子,這裏是你如何能避免返回的一切:

'值'=>(空($ _ GET [ 「S」]) '未定義':$ _GET [ 「S」])