我的控制器中有这部分代码:
if ((!empty($params))&&(isset($params['autore'])||isset($params['titolo'])||isset($params['editore'])||isset($params['anno']))) {
$a = $params['autore'];
if (strpos($a,' ')||strpos($a,',')) {
$autore_diviso = explode(" ", $a);
$this->set('autore_diviso', $autore_diviso);
}
$t = $params['titolo'];
$e = $params['editore'];
$an = $params['anno'];
$an2 = $params['anno2'];
if ($an==''&&$an2=='')
$conditions = array('AND' => array('autori LIKE' => "%$a%",
'editore LIKE' => "%$e%",'titolo LIKE' => "%$t%"));
else
{
if ($an=='')
$conditions = array(array('AND' => array('autori LIKE' => "%$a%",
'editore LIKE' => "%$e%",'titolo LIKE' => "%$t%")),
'AND' => array('anno <=' => "$an2"));
if ($an2=='')
$conditions = array(array('AND' => array('autori LIKE' => "%$a%", 'editore LIKE' => "%$e%",'titolo LIKE' => "%$t%")), 'AND' => array('anno >=' => "$an"));
else
$conditions = array('AND' => array(
'autori LIKE' => "%$a%", 'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"),
'OR' => array('anno BETWEEN ? AND ?' => array($an,$an2)));
}
$u = $this->paginate('CdBiblio',$conditions);
$this->set('query', $u);
}
(其中“anno”的意思是“年份”——titolo = 'title' 和 editore = 'publisher')。
如何简化此代码?
另外,我需要介绍用户搜索 2 个作者的可能性(所以我会添加更多 if ... else 语句)。