我想在表格的第七位添加一列,我正在使用
$this->addColumn('table_name','column_name','type');
Run Code Online (Sandbox Code Playgroud)
最后添加列.有什么方法我可以提到添加列的地方吗?或者在列之后的任何关键字关键字中添加我的新列,例如,密码列.我从Yii Doc那里学到了很多移民
我怎样才能返回文件名.$ image是否打印绝对路径名?
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
foreach($images as $image)
echo $image
?>
Run Code Online (Sandbox Code Playgroud)
我想要的只是特定目录中的文件名而不是绝对名称.
我试图将数据放在yii的隐藏文本中,但我不知道如何.我需要一个类似于常规php语法的代码:
<input type="hidden" name="field_name" value="a"/>
Run Code Online (Sandbox Code Playgroud)
它应该是一个静态值为a的字段.我只需要它与我的$ _POST变量一起进行错误检查.
是否有可能避免修改模型和控制器只是为了把字段放入?我不能使用gii因为我只有代码片段与我.虽然我对yii几乎没有了解所以我不知道我是什么我说最后两句话是对的.
在我的Yii2应用程序中,我试图强制所有用户进行身份验证.如果它们尚未经过身份验证,则应将其重定向到登录页面.
在Yii1中,我通过创建一个类来检查用户是否已登录并将该类附加到onBeginRequest我的主配置文件中的行为来完成此操作.
// Yii 1
'behaviors' => array(
'onBeginRequest' => array(
'class' => 'application.components.RequireLogin',
)
),
Run Code Online (Sandbox Code Playgroud)
如何在Yii2中获得相同的行为?我知道我可以使用行为来执行此操作,但我不想将此行为添加到我的主配置文件中,因此首先检查所有请求的身份验证.
工作行为方法如下所示:
// Yii2
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
Run Code Online (Sandbox Code Playgroud) 控制器:
controllers
|-FooController.php
|-BarController.php
Run Code Online (Sandbox Code Playgroud)
观点:
view
|-foo|
| |-index.php
| |-error.php
|
|-bar|
|-index.php
Run Code Online (Sandbox Code Playgroud)
如何使用条形控制器的动作呈现error.php视图?我试过了:
$this->render('foo/error');
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
<?= $form->field($model, 'email', [
'inputOptions' => [ 'placeholder' => 'Ihre E-Mail Adresse', 'class' => 'newsletter-cta-mail' ]
])->label(false)->textInput(); ?>
<?= Html::submitButton('20€ Gutschein sichern', ['class' => 'green newsletter-cta-button', 'name' => 'contact-button', 'value' => 'hallo']) ?>
<?php ActiveForm::end(); ?>
Run Code Online (Sandbox Code Playgroud)
结果成:
<form id="contact-form" action="/" method="post" role="form">
<input type="hidden" name="_csrf" value="WFlFWnIwU1Y3HnQKSn06GG46PXcjQRUzNCA9KhRiYCxvFXQ9RHIiPA=="> <div class="form-group field-newsletterform-email required has-error">
<input type="text" id="newsletterform-email" class="newsletter-cta-mail" name="NewsletterForm[email]" placeholder="Ihre E-Mail Adresse">
<p class="help-block help-block-error">Verification Code cannot be blank.</p>
</div> <button type="submit" class="green newsletter-cta-button" name="contact-button" value="hallo">20€ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Yii构建一个多页面的表单,但我对PHP和Yii很新,我想知道编写多页面表单的最佳实践是什么.到目前为止,我打算做的是添加一个名为"step"的隐藏字段,其中包含用户在表单中的当前步骤(表单分为3个步骤/页).所以考虑到这一点,这就是我打算如何处理用户点击Controller中的上一个/下一个按钮:
public function actionCreate()
{
$userModel = new User;
$data['activityModel'] = $activityModel;
$data['userModel'] = $userModel;
if (!empty($_POST['step']))
{
switch $_POST['step']:
case '1':
$this->render('create_step1', $data);
break;
case '2':
$this->render('create_step2', $data);
break;
}else
{
$this->render('create_step1', $data);
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法有意义吗?或者我离开基地,在Yii/PHP中有更好,更优化的方法吗?
谢谢!
我对protected /中的组件和扩展文件夹的目的有点困惑
请澄清.
我一直在研究Ember.js,它看起来真的很棒,但有一点让我担心,而且我无法理解它,如果我开始在已经运行的项目中使用它.
我最终是否必须移动客户端的所有内容,并在某些时候使我的应用程序成为单页应用程序?
让我澄清一下......
到目前为止,使用Ember在客户端和服务器之间进行通信的最佳方式是REST.这看起来很棒,但我不喜欢的是第一次加载所有模板.并将我服务器中的所有逻辑移动到客户端(或者我得到了所有这些错误?),因为看起来我的服务器端将成为无逻辑的REST API.
此外,我正在使用Yii Framework,它有一些JavaScript(支持Ajax)组件,如网格.如何在导航中使用ember与所有这些进行交互,而无需重写已经在我的应用程序上工作的一堆东西?
我在登录页面(或状态),然后在登录后,我必须显示一个网格,这对Yii来说很简单,并且整页加载,但如果我使用的是Ember,我怎么能拥有我的网格显示通常会如何?我是否必须预先加载网格的车把模板,以及控制它的JavaScript?
我正在尝试设置一个带有视图链接的按钮.但是yii\bootstrap\Button没有属性'url'.我宁愿使用yii应该只使用平坦的PHP.下面的代码将是理想的情况,但由于"url"选项不存在,是否有其他方法可以使用yii解决此问题?
echo Button::Widget([
'label' => 'label',
'options' => ['class' => 'btn btn-primary'],
'url' => Url::toRoute(['/controller/action']),
]);
Run Code Online (Sandbox Code Playgroud)