我对FlashMessenger有点问题.当我想在布局中检索消息时,它会写入消息的第一个字母...例如"test"显示"t".
我在这个问题上尝试了一个解决方案,但对我没有任何改变.
我用的是php 5.3.6
这是我的代码:
在我的方法中:
$message = 'test';
$this->_helper->FlashMessenger($message);
Run Code Online (Sandbox Code Playgroud)在布局中调用
<div id="message_box">
<?php echo $this->flashMessages(); ?>
</div>
Run Code Online (Sandbox Code Playgroud)有人能帮我吗?
所以我正在使用zend-framwork创建一个项目,我正在尝试实现flash messenger助手,但我找不到任何好的实践来实现它.我需要的是使用flash messenger发送消息和重定向,而消息将直接出现在layout.phtml中的特定位置.我知道,对于重定向器,我可以这样做:
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$redirector->gotoUrl('/my-controller/my-action/param1/test/param2/test2')
->redirectAndExit();'
Run Code Online (Sandbox Code Playgroud)
我可以对闪光灯消息器做些什么来使其工作?那是什么最好的做法?
我正在尝试第一次在Symfony2应用程序中设置然后显示flash消息.第一次显示时,不会清除正在设置的闪存消息.
我在控制器动作中设置了一条flash消息:
public function startAction()
{
if (!$this->hasError()) {
$this->get('session')->setFlash('test_start_error', '');
return $this->redirect($this->generateUrl('app', array(), true));
}
}
Run Code Online (Sandbox Code Playgroud)
在相应的视图中,如果设置了相关的闪存键,则会显示错误通知:
{% if app.session.hasFlash('test_start_error') %}
error content here
{% endif %}
Run Code Online (Sandbox Code Playgroud)
在正确的错误条件下,控制器设置flash消息,并在视图中显示相关的错误内容.
一旦显示,就会在请求后再次呈现闪存消息请求.通过检查相关会话数据var_dump($this->get('session')->getFlashBag());
显示闪存内容保留在会话中.
我的印象是,已经显示一次的flash消息从会话中删除.这种情况不会发生在我身上.
显然我做错了什么 - 它是什么?
当我redirect_to
在控制器中使用rails的方法并传递notice
消息时,一切都很好.对于重定向到的页面,通知显示在顶部,然后在访问下一页时消失.
但是,如果我改为设置一条flash消息,然后只是渲染一个页面,则会显示flash消息,但它也会在下一页访问时显示:
flash[:alert] = 'Please fix mistakes outlined in red'
render action: 'show'
Run Code Online (Sandbox Code Playgroud)
如何在下次访问的页面上显示警报消息.我只希望呈现此页面上显示的警报消息.
使用Rails 3.2.8
cookies ruby-on-rails ruby-on-rails-3 flash-message ruby-on-rails-3.2
我有一个问题.我正在使用Laravel构建一个应用程序,在我上传图片的页面上,我需要一条闪存成功消息,说明您已成功上传新图片.当我上传,它工作,显示Flash消息,但当我刷新,或我转到其他页面时,消息仍然保留在那里.然后在另一次刷新后它消失了.在其他页面上,例如创建新帖子,flash消息可以正常工作,而无需在刷新或转到其他页面后显示.我正在使用imageintervention.io api上传图片,我提到它是因为我不希望你对代码感到困惑.
public function update_avatar(Request $request)
{
// Handle the upload of avatar
if ($request->hasFile('avatar'))
{
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );
$user = Auth::user();
$user->avatar = $filename;
$user->save();
Session::flash('success', 'You have successfully uploaded new picture!');
}
return view('pages.profile', array('user' => Auth::user()) );
}
Run Code Online (Sandbox Code Playgroud) 正如标题,我想知道 Railsflash.discard
和flash.delete
.
我的项目中有一个这样的控制器:
class BriefcasesController < ApplicationController
...
def update
@super_power = SuperPower.find(params[:super_power_id])
@briefcase.contents.delete(params[:super_power_id].to_s)
flash[:notice] = "Successfully removed #{view_context.link_to(@super_power.title, super_power_path(@super_power)} from your briefcase."
redirect_back(fallback_location: '/briefcase'
end
end
Run Code Online (Sandbox Code Playgroud)
帮助link_to
器不会渲染到浏览器的链接,而是打印 html:Successfully removed <a href=\"/powers/1\>flying</a> from your briefcase.
我也尝试过#html_safe
在 flash 消息上使用该方法,但无济于事。我想知道是否有一种方法可以解决此问题view_context
,或者是否有更好的方法可以在 Flash 消息中包含链接。
我的任务是在单击提交按钮时显示 flash 消息(“成功创建”)。[单击提交按钮,数据将存储在服务器中]我已经运行了这个命令 npm i react-flash-message。
<form onSubmit={this.handleSubmit}>
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
处理提交函数:
handleSubmit(event) {
fetch('url', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: this.state.name,
description: this.state.description
})
}).then(res => {
return res.json()
})
.then(data => console.log(data))
.then(() => {
window.location.reload(false)
/* return (
<div>
<FlashMessage duration={5000}>
<strong>I will disapper in 5 seconds!</strong>
</FlashMessage>
</div>
) */
})
/* window.flash('record has been created successfully!', 'success') */
.catch(error => console.log('ERROR from create component'))
}
}
Run Code Online (Sandbox Code Playgroud)
我已经评论了我试图显示 Flash …
成功更新对象后,我需要在同一视图(:编辑)中显示 Flash。如果我重定向到另一个操作 - 一切正常。但是当我需要留在 :edit 时 - 不起作用。有人可以向我解释一下我的错误是什么吗...谢谢!
我的控制器中有以下代码片段:
def edit
@setting = Setting.find_by(slug: current_user)
end
def update
@setting = Setting.find_by(slug: current_user)
if @setting.update(settings_params)
flash[:success] = I18n.t('admin.settings.edit.success')
else
flash[:danger] = I18n.t('admin.settings.edit.not_saved')
end
redirect_to edit_admin_setting_url(user: current_user)
end
Run Code Online (Sandbox Code Playgroud)
routes.rb
:
scope ":user/" do
namespace :admin do
resource :setting, only: [:edit, :update]
end
end
Run Code Online (Sandbox Code Playgroud)
和edit.html.erb
<% if flash[:success].present? %>
<div class="<%= classes + "alert-success" %>">
<%= icon("fas", "check") %>
<%= flash[:success] %>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<% …
Run Code Online (Sandbox Code Playgroud) 通过以下方式将消息传递给 flash 很简单:
$this->Flash->error(__('The user could not be saved. Please, try again.'));
Run Code Online (Sandbox Code Playgroud)
但是当出现更多错误时:
$package->errors();
Run Code Online (Sandbox Code Playgroud)
我只使用一个简单的 foreach 循环:
foreach ($package->errors() as $error=>$value)
{
foreach ($value as $single_error)
{
$error_array[] = ($single_error);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将它传递给一个 flash 元素:
$this->Flash->custom($error_array, [
'key' => 'custom']);
Run Code Online (Sandbox Code Playgroud)
并在闪存消息中:
if ($message > 0) {
foreach ($message as $m) {
echo h($m).'<br />';
}
} else {
echo h($message);
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是处理一系列验证错误的更好方法。
flash-message ×10
action ×1
cakephp ×1
cakephp-3.0 ×1
cookies ×1
helper ×1
laravel ×1
laravel-5 ×1
link-to ×1
php ×1
reactjs ×1
ruby ×1
session ×1
symfony ×1
validation ×1
view ×1
viewcontext ×1