我一直在研究Ember.js,它看起来真的很棒,但有一点让我担心,而且我无法理解它,如果我开始在已经运行的项目中使用它.
我最终是否必须移动客户端的所有内容,并在某些时候使我的应用程序成为单页应用程序?
让我澄清一下......
到目前为止,使用Ember在客户端和服务器之间进行通信的最佳方式是REST.这看起来很棒,但我不喜欢的是第一次加载所有模板.并将我服务器中的所有逻辑移动到客户端(或者我得到了所有这些错误?),因为看起来我的服务器端将成为无逻辑的REST API.
此外,我正在使用Yii Framework,它有一些JavaScript(支持Ajax)组件,如网格.如何在导航中使用ember与所有这些进行交互,而无需重写已经在我的应用程序上工作的一堆东西?
我在登录页面(或状态),然后在登录后,我必须显示一个网格,这对Yii来说很简单,并且整页加载,但如果我使用的是Ember,我怎么能拥有我的网格显示通常会如何?我是否必须预先加载网格的车把模板,以及控制它的JavaScript?
我在给定视图上有以下代码:
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'home-newsletter-form',
'enableAjaxValidation' => false,
'enableClientValidation' => true,
));
echo $form->textField($newsletterSubscribeForm, 'email');
echo $form->error($newsletterSubscribeForm, 'email');
echo CHtml::link("subscribe", "#", array('class'=>'btSubscribe'));
$this->endWidget();
?>
Run Code Online (Sandbox Code Playgroud)
碰巧我需要在MORE和一个视图上使用它,所以我发现一个小部件是一个更好的选择.但是我希望将它放在一个单独的文件上(在app/widgets /文件夹中),并在每个视图上调用.
任何人都可以请他告诉我我们应该遵循哪些步骤才能实现这一目标?
我试图了解Ember.js中的状态是否仅被设计/假设在路径管理器中定义,以及路由是否是Ember的组成部分.几乎所有我看过的指南似乎都假设您希望状态和路线完全匹配.
我想创建不依赖于路由的状态,而只是创建应用程序的状态.例如,在电子邮件客户端中,我可能具有"userHasSpecifiedRecipient"状态.仅当此状态为true时,我才能启用表单的消息框.但显然我不希望网址是:
myEmailClient.com#composingMessage_userHasSpecifiedRecipient_userIs... 等等
有这样的例子吗?
第二个问题:我可以混合与路线和状态相结合的状态吗?
最后:我看到一些建议,建议人们使用Ember的sproutcore-statechart插件,如果他们想要并发状态之类的东西.这仍然是真的吗?
是否有一种方法在Yii中注册js或css文件,以便在资产管理器加载后加载它们.
我使用css文件来覆盖某些Yii扩展的样式,但是Yii在扩展名生成的资产之前包含了我的文件.
我知道我可以更改扩展名以从资产管理器中删除css文件并手动添加它们,registerCssFile但这不是我想要这样做的方式.
这就是我所拥有的:
<head>
...
<link rel="stylesheet" type="text/css" href="/css/MY_CSS.css" />
...
<link rel="stylesheet" type="text/css" href="/assets/8e838803/css/EXTENSION_CSS.css" />
...
</head>
Run Code Online (Sandbox Code Playgroud)
这就是我想要的:
<head>
...
<link rel="stylesheet" type="text/css" href="/assets/8e838803/css/EXTENSION_CSS.css" />
...
<link rel="stylesheet" type="text/css" href="/css/MY_CSS.css" /> <!-- the last one -->
</head>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
我正在尝试创建自己的xml站点地图.一切都已完成,除了我认为最容易的部分.如何获得网站上所有页面的列表?我在/ site文件夹和其他一些文件夹中有很多视图.有没有办法明确请求他们的URL或可能通过控制器?
我不想使用扩展名
我正在yii中构建一个数据库密集型应用程序.因此,性能和安全性自然是一个问题.除此之外,表格验证也是一个主要标准.为了安全起见,我计划对所有Sql查询使用参数绑定.为了验证,我想使用Yii提供的验证器,而不是自己推出验证器.我知道性能会受到CActiveRecord的影响.所以我打算为我的所有表创建Cmodel类,在这些相应的模型中定义验证规则,并定义执行sql查询以检索和插入数据的函数.我在网站上的所有数据收集主要是通过表格(约95%),如果我使用Cformmodel,我真的不明白Cmodel和Cformmodel之间的区别,使用它们是否有任何性能损失.
另外为了防止XSS攻击,我想使用HTML purify包装器作为验证规则,因为我几乎到处读到性能对这个包装器不好的情况,即使我将它用作验证规则,它会不会很糟糕?我是否应该使用Chtml :: Encode显示输出文本,即使我正在净化输入?
我处理数据的粗略计划是:
$users= new Users() ; //Users is extending CModel , contains validation rules
$users=getdata(Yii->app->userid()) ;
if(isset('update'))
{
if($users->validate())
{$users->updatedata() ; }
}
$this->render('users','data'=>$users)
Run Code Online (Sandbox Code Playgroud) 我有一些模型设置了异步关系,例如:
User = DS.Model({
postsApproved: DS.hasMany('post', {async: true, inverse: 'approved'})
})
Post = DS.Model({
approver: DS.belongsTo('user', {async: true, inverse: 'postsApproved'})
})
Run Code Online (Sandbox Code Playgroud)
在控制器中,我在帖子上有一个属性isApproved,它只是检查是否approver已设置.我希望这应该有效:
isApproved: function() {
return !Ember.isNone(this.get('approver'));
}
Run Code Online (Sandbox Code Playgroud)
但是这总是返回true,如果我检查数据,我看到它是因为this.get('approver')返回一个promise.这有效:
isApproved: function() {
return !Ember.isNone(this.get('approver.content'));
}
Run Code Online (Sandbox Code Playgroud)
但content在我看来,使用内部有点太多了.这是正确的做法,还是我错过了什么?
我是yii框架的新手,所以我可以使用一些帮助.假设我的数据库中有一个用户表,其中一个配置文件字段是国籍.在另一张桌子上,我有很多这样的国籍:
id Nationality short
1 Germany DE
2 France FR
3 Netherlands NL
Run Code Online (Sandbox Code Playgroud)
等...约60多个国籍.在usertable中,用户国籍与此表链接,如下所示:
id username nationality
1 user 1
Run Code Online (Sandbox Code Playgroud)
这意味着用户1的国籍=德国.但是当我在个人资料视图中时,如何从国籍表中选择德国?
我希望我清楚,否则问:)
迎接,斯特凡.
我是yii的新手.我刚刚在yii中创建了一个模块,文件结构如下
-yii
-protected
-modules
-admin
-controller
-model
-view
-layout
-main.php
-css
-style.css
-images
-logo.jpg
Run Code Online (Sandbox Code Playgroud)
我能够将布局设置为这样
'modules'=>array(
// uncomment the following to enable the Gii tool
'admin'=>array(
'layoutPath' => 'protected/modules/admin/views/layouts', ;
Run Code Online (Sandbox Code Playgroud)
)
现在布局是从管理模块呈现的问题是我无法加载样式表
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/protected/modules/admin/css/reset.css" media="all">
Run Code Online (Sandbox Code Playgroud)
有没有人知道在yii中加载样式表的正确方法
我有一个标准的Gii创建的管理视图,它使用CGridView,它显示我的用户表数据.
问题是名称为"root"的用户必须不可见.
有没有办法在条件"...和用户名!='root'"中添加静态?
admin.php [查看]
'columns'=>array(
'id',
'username',
'password',
'realname',
'email',
.....
Run Code Online (Sandbox Code Playgroud)
user.php [型号]
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('username',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('realname',$this->realname,true);
$criteria->compare('email',$this->email,true);
......
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Run Code Online (Sandbox Code Playgroud) 我需要在Yii中实现这样的事情:
<form action="somescript.php#fragment-id">
Run Code Online (Sandbox Code Playgroud)
表单获取后,成功消息应出现在用户眼前.此时,消息显示但是,浏览器返回到顶部.
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contact-form',
'enableClientValidation'=>true,
)); ?>
//form here
<?php echo CHtml::submitButton('send')); ?>
<?php $this->endWidget(); ?>
Run Code Online (Sandbox Code Playgroud)
我在这里看到一些叫做的东西actionPrefix,但似乎是来自另一个班级:
CWidget
Run Code Online (Sandbox Code Playgroud)
http://www.yiiframework.com/doc/api/1.1/CActiveForm
我试过actionPrefix像这样添加:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contact-form',
'enableClientValidation'=>true,
'actionPrefix'=>'fragment-id'
)); ?>
Run Code Online (Sandbox Code Playgroud)
没有骰子.
请指教
php ×9
yii ×9
ember.js ×3
javascript ×2
css ×1
ember-data ×1
foreign-keys ×1
promise ×1
registration ×1
rest ×1
routes ×1
sitemap ×1
statechart ×1
where ×1
yii-cmodel ×1