【问题标题】:How To Insert Data From Web Service/xml/json Into Mysql Db Using Ar Model Class如何使用 Ar 模型类将 Web 服务/xml/json 中的数据插入 Mysql Db
【发布时间】:2013-09-24 01:54:07
【问题描述】:

我是 Yii 的新手,仍在学习和热爱它。所以问题是我必须建立一个基于亚马逊网络服务的产品检索系统。

首先,我创建了必要的表格来保存有关产品的信息。然后我使用了不起的 Gii 创建了模型类。之后我再次使用 Gii 生成了 CRUD。现在我有点卡住了。所以 Gii 提供了一个表单让用户用必要的信息填充表格。现在在我的系统/应用程序中,对于任何包含产品信息的主表,我都不需要表单输入。这些表应该自动填充从 Amazon API 收集的数据。只有少数表格可以具有与输入字段相关的表单。

所以任何人都可以指导我正确的方向,我将如何开始实现该功能。我是否应该从相应的视图中删除此代码并在 Controller 类中编写功能。

<div class="row">
<?php echo $form->labelEx($model,'type_id'); ?>
<?php echo $form->textField($model,'type_id'); ?>
<?php echo $form->error($model,'type_id'); ?>
</div>

或者我应该生成一个单独的视图文件。现在我似乎找不到任何进展。如何开始?使用 Yii 构建的典型应用程序的工作流顺序应该是什么。我将把业务逻辑放在哪里?当然,我知道根据 MVC 范例,业务逻辑应该始终驻留在 Controller 类中。但是我应该在一个控制器类中编写所有应用程序逻辑吗?

我已阅读有关模块和组件的信息。但我面临的困境是我不知道什么时候才是将必要的逻辑分离到其各自的模块或组件中的合适时机。

我已经在关注 Web Application Development with Yii and PHP 2nd Edition,我承认这是一本很棒的书。到现在我已经读了两遍了。但是当我开始构建我的项目时,我陷入了困境。只是不知道从哪里开始。我的应用程序不会像本书示例那样遵循类似的流程图。

我只想遵守 Yii 中设置的约定。我在很多地方都听说过,一旦你习惯了 Yii 的惯例,你的工作效率就会提高数百倍。那么最佳做法是什么?

说::

1) What are the conventions when building an automated/real time system ?
2) How to initialize the specific controller logic sequence
3) How to get the most benefit from the CRUD/Model/Module system already built by Gii ?

【问题讨论】:

    标签: php api rest yii


    【解决方案1】:

    通过 Gii 代码生成,我尝试删除任何未使用的内容。如果保留它会使维护变得更加困难,如果需要,您可以随时添加它。

    控制器不需要与表相关联。如果有的话,它们应该与某个功能区域相关(例如 RestApiController 或 ReportController)。

    你应该让你的控制器尽可能的薄。如果模型中有适当的逻辑,它会使单元测试更容易。请参阅 Yii 最佳实践文档的最后一段 http://www.yiiframework.com/doc/guide/1.1/en/basics.best-practices

    我个人认为 Gii CRUD 生成只适用于管理员级别的配置。例如,您需要了解您的数据库设计/关系才能正确创建数据。对于普通用户来说,它可能很复杂,而且对用户不太友好。

    我一直在考虑将Service Layer 添加到我的 Yii 项目中。这就是你所有的业务逻辑布线的地方。

    【讨论】:

    • 太棒了!这正是我期待的建议。是的,我正在从头开始构建数据库,所以我知道存在什么关系。
    • 我应该如何删除 Gii 生成的代码?我的意思是不会破坏其他相关的东西。例如,我不需要 Gii 提供的默认表单,因为您知道表格应该从 API 获取输入。所以我应该从视图文件中删除相关代码。或者我应该做一个单独的视图。
    • 哦,还有一件事。关于保持控制器薄,你认为我会怎么做。您认为模型中可以保留哪些逻辑。无论如何,我真的很感谢你的建议。现在感觉真的很励志。非常感谢
    • 您通常可以删除控制器并查看代码而不会产生太大影响。 Gii 生成的模型非常基础。所有控制器应该做的就是接受网络请求,进行身份验证并获取视图数据。所有繁重的工作都应该尽可能地推到模型上。这是我的看法。
    猜你喜欢
    • 2020-09-13
    • 2012-12-11
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多