CAKEPHP - 生产服务器上的未定义索引

时间:2013-05-22 14:39:24

标签: cakephp

我将我的应用程序放在网络上的生产服务器中,它无法识别我的任何模型。

在我的本地服务器中,这可以正常工作......

这会在foreach数据上出现此错误。 Undefined index: Power

我在控制器中有这个:

$this->set('poderes',$this->Attorney->Power->find('all'));

这在我看来:

 ?php foreach ($poderes as $power):  ?>
    <?php debug($power) ?>
    <div class="checkbox tooltip" title="<?php echo $power['Power']['texto'] ?>">
    <input type="checkbox" name="data[Power][Power][]" value="<?php echo $power['Power']['id'] ?>"  id="PowerPower<?php echo $power['Power']['id'] ?>" />
    <label><?php echo $power['Power']['resumo'] ?></label>
    </div>
<?php endforeach ?>

在我的本地服务器中,这是$power的调试:

array(
'Power' => array(
    'id' => '1',
    'resumo' => 'Negociacao',
    'texto' => '<b>(a)</b> formalizar a transmissao, novacaoo, confissao, dacao em pagamento e transacao de obrigacoes cujo sujeito ativo (credora) seja a OUTORGANTE e as obrigacoes sejam decorrentes de suas operacoes;',
    'teste' => ''
)

这是PRODUCTION服务器中$power的调试:

array(
(int) 0 => array(
    'id' => '1',
    'resumo' => 'Negociacao',
    'texto' => '<b>(a)</b> formalizar a transmissao, novacaoo, confissao, dacao em pagamento e transacao de obrigacoes cujo sujeito ativo (credora) seja a OUTORGANTE e as obrigacoes sejam decorrentes de suas operacoes;',
    'teste' => ''
)

这显示我Undefined index ['Power'].但是,查询适用于控制器:

Nr  Query   Error   Affected    Num. rows   Took (ms)
 1  SELECT `Power`.`id`, `Power`.`resumo`, `Power`.`texto`, `Power`.`teste` FROM `litigium_societario`.`powers` AS `Power` WHERE 1 = 1

1 个答案:

答案 0 :(得分:0)

我可能错了,但听起来你正在犯这些错误因为你的生产( - 因此数据库中没有数据 - ......呃,我猜),你没有验证find()(例如)实际那些索引。

要检查,请执行此操作:专注于一个抛出该错误的操作,检查您是否正在执行类似

的操作
$results = $this->Model->find('all', array('conditions'=>array(/* add a condition you know won't give any results back*/));
echo $results['Model'];

没有结果的查找将为您提供一个空数组

pr($results);
//gives
Array(
);

而不是

Array('Model'=>null)

因此,如果您在此之后尝试获取值而未实际检查数组是否有结果,则会为您提供索引通知。

这应该是你的错误。尽管如此,如果您将debug设置为0,您可以绕过那些讨厌的通知,但我建议您检查所有操作并添加一个简单的

if (count($results) > 0)
   // or
if (isset($results['Model'])

以避免将来出现问题,并添加正确的验证以包含所有案例。