【问题标题】:CakePHP 1.3 ElementsCakePHP 1.3 元素
【发布时间】:2013-07-15 21:14:04
【问题描述】:

我将如何将此代码转换为一个元素以在我的 Web 应用程序中重用?

<div class="row">

<?php foreach ($mobiles as $mobile): ?>
    <ul class="product-listing unstyled">
    <li>
        <a href="<?php echo $this->webroot . 'mobiles/view/'.$mobile['Mobile']['id']; ?>">
            <img src="<?php echo $this->webroot; echo 'files/files'.$mobile['Mobile']['filename']; ?>" alt="<?php echo $mobile['Mobile']['productname']; ?>" />
            <div class="pricing pull-right">&euro;<?php echo $mobile['Mobile']['price']; ?> </div>
            <h3><?php echo $mobile['Mobile']['productname']; ?></h3>
        </a>
    </li>
    </ul>
<?php endforeach; ?>

</div>  

【问题讨论】:

  • 我想在多个视图上重用这段代码,我唯一不确定的是如何动态更改这些值。这意味着 $mobiles 变为 $tablets 并且模型也会更改从手机到平板

标签: php cakephp cakephp-1.3


【解决方案1】:

剪切和粘贴

一个元素只是一段视图代码——创建一个元素:

// /views/elements/foo.ctp
<div class="row">

<?php foreach ($mobiles as $mobile): ?>
...

只需在您的视图文件(或布局 - 或其他元素)中调用它:

// /widgets/index.ctp

<?php echo $this->element('foo'); ?>

如何将变量传递给元素

in the documentation 所述,可以将变量传递给元素:

<?php echo
$this->element('helpbox',
    array("helptext" => "Oh, this text is very helpful."));
?>

在元素文件中,所有传递的变量都可以作为参数数组的成员使用(与控制器中的 set() 处理视图文件的方式相同)。在上面的例子中,/app/views/elements/helpbox.ctp 文件可以使用 $helptext 变量。

// /views/elements/helpbox.ctp
<?php
echo $helptext; //outputs "Oh, this text is very helpful."
?>

如果它是变量 - 使其成为变量

模型也从移动设备更改为平板电脑

问题中的示例代码将模型名称作为固定字符串:

<h3><?php echo $mobile['Mobile']['productname']; ?></h3>

只要把它变成一个变量:

<h3><?php echo $mobile[$modelName]['productname']; ?></h3>

并在调用元素时定义。

【讨论】:

  • 请注意:如果您在渲染主布局或视图(调用各个元素的视图)时运行的控制器/操作代码的任何部分中使用 $this->set() 设置变量),这些变量将已经可用于元素。 IE 如果你去 /controller/action 并且 AppController::beforeFilter() 执行$this-&gt;set('var1', $somevar);,并且'action'视图调用$this-&gt;element('someelement');$var1 将在'someelement'元素中可用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多