【问题标题】:Cakephp: Get data from model into another models's ViewCakephp:从模型中获取数据到另一个模型的视图中
【发布时间】:2012-10-24 11:13:25
【问题描述】:

在一个 Cakephp v2.3 App 中,有两个模型:

采购模式:它包含以下主要字段:id、invoice_date 和 Gross_amount(根据 Supplier.tax_rate 计算)。

class Purchase extends AppModel {

    public $displayField = 'id';
    public $belongsTo = 'Supplier';
}

供应商模型:包含id、name和tax_rate

class Supplier extends AppModel {
    public $displayField = 'name';
    public $hasMany = 'Purchase';
}

这是我的 PurchasesController 添加视图的外观:

现在,我想在app/View/Purchase/add.ctp 中显示当前选定供应商的Supplier.tax_rate 作为标签或文本输入。

知道怎么做吗?

【问题讨论】:

  • 也许您可以启动一个 ajax 调用以在 select 选项上使用 onChange 事件从供应商处检索数据。您怎么看?
  • 是的,但是因为供应商数据小于 5kb,所以我结束了将所有数据放入视图中,因此将所有数据作为 JSON 一次输出到视图中是有意义的,这将有助于避免延迟。每个 ajax 调用会增加延迟:)

标签: php cakephp cakephp-2.0


【解决方案1】:

使用 Jquery 查找选择框更改时的税率。查看 JsHelper,http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html 了解更多详情

这是来自我的 1.3 应用程序之一的一些示例视图代码,可能会对您有所帮助。你当然必须有 helper、jquery、控制器代码和其他视图才能加载。

//helper in view
//observe selectbox for selection, if change, update question.
$js->get('#EntitiesUserPrimarycontactId')->event('change', $js->request(array('controller'=>'users','action'=>'update_previewcontact'),array('update'=>'#step4_results','dataExpression'=>true,
'before' => "$('#step4_results').fadeOut('fast');",
'complete' => "$('#step4_results').fadeIn('slow');,
'data'=>$js->serializeForm(array('isForm' => true, 'inline' => true)) )));

【讨论】:

  • 我试过这个,但我无法让它为我工作,但我最终手工编写了 JS,而不是让蛋糕为我生成它。
【解决方案2】:

我想通了。 我最终所做的是将所有供应商税率数据设为JSON,将其输出到视图中,然后使用客户端 javascript 选择相关代码。

PurchasesController 调用自定义模型方法,该方法启动 SQL 查询以获取所有供应商税率数据。

$supplier_tax_rate = $this->Purchase->Supplier->getTaxRate();
$this->set('supplier_tax_rate', json_encode($supplier_tax_rate));

在客户端。我使用 Javascript 来做我想做的事,这里 supplier_tax_rates 是存储 JSON 税率数据的变量,getTaxRate 是一个变量函数,它根据来自供应商 downdown 的 id 从 JSON 返回税率。

$(function() {
    var taxRates = $.parseJSON(supplier_tax_rates);

    var getTaxRate = function(id) {
        for (var i in taxRates) {
            if (taxRates[i].id == id) {
                return taxRates[i].tax_percentage_charged;
            }
        }
    };
}); 

这对我来说效果很好,希望它可以帮助其他想要从蛋糕中的数据库中获取一些数据的人,基于下拉列表的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多