我正在使用Perch,这是一个php CMS。我在这里问这个问题,因为它似乎是一个普通的php问题。
基本上,我在搜索页面上使用过滤器:
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 :(得分: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不支持更好的过滤条件,我想这不是一个很好的解决方案...
答案 1 :(得分:0)
不要担心:如果值字段为空,Perch将匹配所有值,就好像该过滤器不存在一样。
您可以在此轻松使用“三元运算符”(?:)来代替IF语句。
作为一个例子,这里是你如何避免返回所有内容:
'value'=>(空($ _ GET [“s”])?'undefined':$ _GET [“s”])