我注意到Yii在assets目录中创建了一组奇怪的目录(名称如8523d23或10s89b92),这甚至发生在运行时.例如,我的一个表获得了超过10条记录,分页被踢了,我在名为pager.css的assets子目录中获得了一个新文件.
当我将我的网站从测试移动到生产时,我应该复制所有这些,还是只创建一个空的"assets"目录,它将在运行时填充?
如果我想添加一些新的jQuery插件,我该怎么办?
例如,我想添加jquery.charcounter.js,我将它复制到资产还是yii/framework/web/js/source?如果我做后者,我如何获得HTML页面输出中包含的.js文件?
我知道如何将变量从控制器传递到视图中:
$this->render('view_name', array('variable_name'=>'variable_value'));
Run Code Online (Sandbox Code Playgroud)
但是我想把一些变量传递给布局.控制器和布局之间的唯一连接似乎是控制器类中的public $ layout属性,如下所示:
public $layout='//layouts/column2';
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到将变量传递给它的方法?
我一直在使用Yii一段时间,当我想从数据库中提取数据时,我通常只使用findByAttributes.
$model=Auction::model()->findAllByAttributes(array('status'=>'1'));
Run Code Online (Sandbox Code Playgroud)
或类似的规定.
我的问题是,我将如何处理大于类型的情况?我试过了
$model=Auction::model()->findAllByAttributes(array('starttime'>=$date));
Run Code Online (Sandbox Code Playgroud)
其中日期已分配当前日期/时间设置,但这会导致错误.所以我的问题是我需要使用条件和/或参数吗?我应该在模型中使用Criteria或CActiveDataProvider这样的东西吗?
我希望有人指出我正确的方向.我总是通过使用findAll()来获得,但我知道他们是更好的方法.关于什么以及何时使用属性,条件,参数等的一般信息也很好.
我已阅读Yii文档并搜索了大量网站以获取这些问题的答案,我找不到它.
我正在使用Yii.
如果我的网址是http://localhost/evengee/event/page/id/2/sfn+master/?tab=3
我的真实网址(文件路径)只是http://localhost/evengee
我将如何获得,最好是在视图中:
http://localhost/evengee/event/page/id/2/sfn+master/?tab=3http://localhost/evengee/event/page/id/2/sfn+master/ 我知道我可以拆分/爆炸str_replace吗?并使用$ _SERVER.宁愿使用Yii本机方法.
EmailArchive表:
id email_id to from
1 101 uk msm
2 102 uu avc
3 101 rk uk
4 103 xyz abc
5 104 xyz poi
6 104 abc xyz
7 101 xyz abc
Run Code Online (Sandbox Code Playgroud)
现在在Yii我想要记录,其中email_id = 101我正在使用下面的代码,但它不起作用.
$id =101;
$criteria = new CDbCriteria();
$criteria->addCondition("email_id < :email_id");
$comments = EmailArchive::model()->findAll($criteria, array(':email_id' => $id,));
Run Code Online (Sandbox Code Playgroud) 我在yii中创建了一个项目,我的默认控制器指向站点控制器.我想用其他一些来改变它,我可以在yii中指定默认控制器和动作.
我的网站分为单独的模块.每个模块都有自己的特定css或js文件/protected/modules/my_module/assets/css或jsjs文件.当我第一次使用使用我的资产的页面时,Yiis资产管理器创建文件夹.不幸的是,如果我在我的文件中更改某些内容 - Yii不会重新加载我的css或js文件.我必须手动删除/projects/assets文件夹.在开发应用程序时,这真的很烦人.
有没有办法迫使Yii每次请求重新加载资产?
我需要在自定义组件文件中呈现局部视图Yii2,根据Yii文档,您可以通过以下方式访问视图实例:
\Yii::$app->view->renderFile('@app/views/site/license.php');
Run Code Online (Sandbox Code Playgroud)
我继续尝试:
Yii::$app->view->renderPartial('//my/view/');
Run Code Online (Sandbox Code Playgroud)
...但是我得到了一个错误,我试图访问一个不存在的方法.
然后我检查了视图类并注意到它没有renderPartial,这是控制器类的方法.
我看到它有renderFile方法和render方法; 我应该使用以下哪些?
文档没有说明render方法包含的布局就像控制器类中的同名方法一样,所以我不确定; 对于renderFile,我不是100%确定是否合适?
有人可以解释哪种方法会产生相同的结果renderPartial吗?
我从yii2 doc中了解了一些事件.
我知道它是如何工作的,但我不知道在哪里使用它以及如何在我的开发中使用它.有一个发送电子邮件通知的例子,但我想要一个明确的例子,清楚这个想法在哪里使用以及如何使用它.
我的代码在我写的模型下面
const EVENT_NEW_USER = 'new-user';
public function sendMailto($event){
$this->sendMail(arguments);
// you code
}
Run Code Online (Sandbox Code Playgroud)
在控制器中:
use yii\base\Component;
use yii\base\Event;
public function someaction (){
$model->on(SignUpForm::EVENT_NEW_USER, [$model,'sendMailto'],['auth'=>$model_auth,'user_details'=>$user_details]);
$model->trigger(SignUpForm::EVENT_NEW_USER);
}
Run Code Online (Sandbox Code Playgroud) yii ×10
php ×9
assets ×2
yii2 ×2
attributes ×1
params ×1
refresh ×1
reload ×1
url ×1
url-routing ×1