使用CakePHP 2.x获取和显示数据

时间:2014-02-17 01:52:57

标签: php mysql database cakephp

编辑:2。我已经解决了这个问题!要查看最终版本,请查看此pastebin,并在StackOverflow上查看它与我的代码之间的区别。

http://pastebin.com/yWqs86Zt

EDIT。我现在能够在屏幕上打印数据,但是当我只想要每行一行时,我会看到所有行星数据。 (地球上的地球行.ctp等)。

新蛋糕和非常困惑。我查看了文件,但仍然不知所措。任何可以帮助学生开发者的人都有很大的道具。

总而言之,我正在开发一个应用程序,它显示太阳系中每个行星和月球的数据,将数据库中的各种数据传递给whateverplanet.ctp。

我想在每个ctp上显示一行。例如,通过调用PlanetsController earth()函数中的planet_name / info / content列,在Planets / earth.ctp上显示地球信息。

我有一个包含两个表的数据库

  • 行星表
    • planet_id(int)
    • planet_name(varchar)
    • planet_info(varchar)
    • planet_content(varchar)

卫星表只用卫星而不是行星设置。

Planet Model看起来像

<?php
App::uses('AppModel', 'Model'); 
class Planet extends AppModel {

        public $name = 'Planet';
        public $useTable = 'planets';
} 

?>

控制器就是这样(带有注释掉的尝试)

<?php

class PlanetsController extends AppController
{
    public $name = 'Planets';
    public $helpers = array('Html', 'Form');

    public function earth() {

         $this->set('planets', $this->Planet->find('all'));

    }
}
?>

earth.ctp看起来像这样    

    <?php echo $this->Html->image('earth1.jpg'); ?>

    <h2> Fact File </h2>
    <?php foreach ($planets as $planet): ?>

            <h3><?php echo $planet['Planet']['planet_name']; ?></h3>

            <p> <?php echo $planet['Planet']['planet_info']; ?></p>


            <?php endforeach; ?>
    <!--<p>orem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus elementum mattis turpis id aliquam. Duis vitae magna in justo varius dapibus. Donec mattis nunc tellus, at sollicitudin risus rutrum in. Curabitur vehicula et ipsum vel fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum venenatis eros gravida nibh eleifend egestas. Quisque vel libero convallis, vulputate sem nec, sollicitudin nisl. Nullam egestas orci eget velit hendrerit rhoncus.</p>-->
</div><!-- /.col-xs-12 main -->

3 个答案:

答案 0 :(得分:0)

你应该回到cakephp docs,回顾一下HtmlHelper, 然后再次检查:

  

'Html'=&gt; array('className'=&gt;'BoostCakeHtml'),       'Form'=&gt; array('className'=&gt;'BoostCakeForm'),       'Paginator'=&gt; array('className'=&gt;'BoostCakePaginator'),

答案 1 :(得分:0)

您注释掉的代码段有两个问题:

//$earth = $this->Earth->find('all');
//$this->set('planets');

首先,您的模型名为Planet$this->Earth名称为Earth,您尝试访问名为$this->set('planets', $this->Planet->find('all')); 的(不存在的)模型。

在第二行中,您为视图定义了一个变量,但是没有为其赋值。

解决这两个问题,你得到的结论是:

{{1}}

答案 2 :(得分:0)

$earth = $this->Planet->find('first', array('conditions' => array('planet_name' => 'Earth')));
$this->set('earth', $earth);

如果您期望更多行,也可以使用find('all')。

顺便说一下,你应该将'planet_id'列命名为'id';在http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#model-and-database-conventions

了解更多信息