我过去在几个项目中使用过CakePHP,并且最近开始使用Ruby on Rails,但是有一个新项目我即将开始需要PHP.在CakePHP上刷新自己的同时,我了解到有一个名为Lithium的新框架,它本质上就是CakePHP 3.它由一群前核心CakePHP开发人员开发.
我还没有找到关于它的大量信息,因为它仍然处于开发状态,但我想知道是否有人知道(或有一个链接)一些关于它提供给CakePHP的好处的信息.希望有点超出官方网站上显示的快速概述.我正在尝试决定是否将CakePHP用于我即将推出的PHP项目,或者等待Lithium发布非开发版本并尝试一下.
我必须在我的Lithium(基于PHP框架)的应用程序中实现登录令牌.两个原因:
我想要一个"记住我"的功能.
我还需要一种跟踪服务器上登录的方法,以便我可以在node.js套接字服务器上验证经过身份验证的用户,如下所示:
所以这是一个两部分的问题,它只是为了验证我不是白痴,因为这个网站的安全性比平时更高.
这是创建登录令牌的合理方法吗?
<?php
// String::hash() generates a sha512 (by default) hash.
String::hash(time() . $user['username']);
?>
Run Code Online (Sandbox Code Playgroud)
我提出的Web套接字认证系统是否理智?你能看到出现的问题或更有效的方法吗?
由于没有大量文档,因此Lithium PHP Framework的一些功能并不为公众所熟知.如果我只使用文档中显示的框架,是否有任何很酷的代码功能?
我已经做了相当多的锂教程(的情况下,下面的链接,他们帮助别人,同时也显示出我做我的功课:)我理解创建模型,视图,控制器和使用MVC创造的最基本的部件基于表单输入的DB记录.
但是,我是MVC for webapps和Lithium的新手,我不确定如何在更复杂的情况下编写代码.这是一个普遍的问题,但我有两个具体的验证问题:
我非常感谢对这些问题的任何帮助,这样的具体例子也将真正帮助我理解如何在其他情况下做好MVC编码!
出于UI原因,注册表单要求用户在三个字段中输入他们的DOB:
<?=$this->form->field('birthday', array('type' => 'select', 'list' => array(/*...*/))); ?>
<?=$this->form->field('birthmonth', array('type' => 'select', 'list' => array(/*...*/))); ?>
<?=$this->form->field('birthyear', array('type' => 'select', 'list' => array(/*...*/))); ?>
Run Code Online (Sandbox Code Playgroud)
验证此服务器端的最佳方法是什么?我想我应该利用自动验证,但我不确定对于一组不属于模型的变量的最佳方法.例如:
$this->request->data中UsersController?例如$this->request->data,UsersController在传递之前修改内部Users::create.$this->request->data并使用Validator::isDate内部静态调用UsersController吗?Users::create并进行所有额外的验证和后期处理吗?所有这些似乎都可以工作,虽然有些看起来有点难看,我不知道哪些可能会在未来给我带来重大问题.
[编辑:与此密切相关的是将三个表单字段组合到一个字段中以保存在模型中的问题]
对于常识/常规做法,注册表单要求用户指定两次电子邮件地址:
<?=$this->form->field('email_address'); ?>
<?=$this->form->field('verify_email_address'); ?>
Run Code Online (Sandbox Code Playgroud)
如何编写自动验证规则来检查这两个表单字段是否具有相同的值,但只将email_address保存到数据库中?
这感觉就像它几乎与上述一个同样的问题,因为,我能想到的可能答案的列表是相同的 - 所以我提交这是一个问题,但我会很感激你的帮助有两个部分,因为我认为这个解决方案将是微妙的,不同的,同样具有启发性!
[编辑:与此密切相关的是不将verify_email_address存储到我的模型和数据库中的问题]
我已经读过其他人了,但这三个教程让我到了用户所在的位置并立即注册表单...
关于密切相关主题的其他一些StackOverflow问题(但没有回答它,也没有回答特定于锂的问题)
这或多或少是过去Stack Overflow问题的以框架为中心的版本,该问题是关于MVC应用程序的大多数介绍性材料如何在模型,视图和控制器之间呈现紧密耦合.例如,您将拥有一个由用户控制器修改的用户表,用户控制器又将过滤后的数据推送到用户视图.我的印象是很多MVC框架也倾向于反映这种模式.这一切都很好,很好,但除了用HTML表单构建和显示单调的事物列表之外,它从来没有真正引导我.
现在正在研究的MVC框架是Lithium,它作为巧妙的PHP5.3编码技术的案例研究似乎非常有趣.一方面,Lithium有一个Model类,它在各个表周围提供包装器对象,并抽象出一些简单的查询.另一方面,它有一个很好的约定,即路由URL到控制器对象上的方法调用,然后呈现给显示模板.
但是在这期间,我发现自己不知道将表A中的数据与表B到Z中的数据相关联的所有有趣逻辑放在哪里.或者至少,我不知道在哪里放置这样的逻辑的方式与框架的设计一致.根据我的理解,Lithium的Model抽象除了消除一些行级插入/更新/删除样板外没什么作用,控制器/视图架构似乎主要是关于用户界面.我不想在Controller从URL请求接收路由函数调用的同一个类中放入大量业务逻辑.
我的直觉是用一堆我自己的代码填补空白,这些代码或多或少完全存在于框架之外.我不确定我是否应该期待更多,但考虑到Lithium中其他所有内容的结构是如何严格的,它感觉某种程度上不令人满意,就像我刚刚推出了自己的样板减少代码而没有花费很多资源来解决这个问题.一个大框架.
我在这里错过了什么?是否有推荐的架构或哲学来使用这种类型的框架?
所以我可以通过这样做来寻找具体的价值观
$recordset= Model::find('all', array(
'conditions' => array(
'condition' => $somevalue
)
))
Run Code Online (Sandbox Code Playgroud)
但是,如果我想匹配部分值,我该怎么办?
现在,我自己写了一个问题,一个la:
$abc = Connections::get('default')->
read('SELECT * FROM myTable WHERE condition LIKE "%partial string%"');
Run Code Online (Sandbox Code Playgroud) 通常我使用Zend Framework,这是我在Lithium中遗漏的东西.谐音.在视图中有一个渲染方法,你可以使用最接近的'elements'.
<?php $this->_render('element', 'form); ?>
Run Code Online (Sandbox Code Playgroud)
这确实有效,但它要求form.html.php文件位于/ views/elements文件夹中.是否可以让它在另一条路径中搜索?喜欢/ views/users /所以它获取文件/views/users/form.html.php.
我尝试了以下内容,因为我发现render方法确实接受了一个options参数,您可以在其中指定路径.所以我帮助我解决了这个问题.
namespace app\extensions\helper;
use lithium\template\TemplateException;
class Partial extends \lithium\template\Helper
{
public function render($name, $folder = 'elements', $data = array())
{
$path = LITHIUM_APP_PATH . '/views/' . $folder;
$options['paths']['element'] = '{:library}/views/' . $folder . '/{:template}.{:type}.php';
return $this->_context->view()->render(
array('element' => $name),
$data,
$options
);
}
}
Run Code Online (Sandbox Code Playgroud)
但是它仍然只在/ view/elements文件夹中搜索,而不是在我指定的路径中搜索.
有什么我做错了吗?
我正在使用MongoDB开发一个应用程序.我想在前端提供的标准功能之一是"自动建议"功能,作为城市前几个字母中的一种类型(例如:如果我开始输入'Mu ...',它应该建议给用户'孟买/印度'.
我在这里看到了一些线程,谷歌上也有一些网站是网站数据库,基本上是基于RDBMS的.
这里有人使用或组合了一个文件数据库来获取城市/国家的信息吗?如果是这样,我很想知道数据的来源以及他们在Lithium/Backbone/MongoDB应用程序中导入数据的步骤,包括任何相关的知识.
编辑:https: //developers.google.com/places/documentation/autocomplete 是否有人使用Facebook或Google Places API在实时/生产环境中查找城市/国家/地区?它在响应速度和稳定性等方面是否满足您的需求?
我想将配置数据存储在单独的文件中,并使用适当的Lithium方式加载/读取它.
我想使用 mongodb 和锂构建一个网络服务。什么是更好的:
将所有客户端的数据存储在一个集合中(例如,多个客户端的所有交易文档都存储在一个集合中)
创建多个集合,例如 transactions_client1、transaction_client2 等。
每个客户一个数据库
系统必须是可扩展的并且必须易于部署