【问题标题】:Session flash not working in laravel会话闪存在 laravel 中不起作用
【发布时间】:2018-08-03 04:25:52
【问题描述】:

我创建了一个页面,当加载该页面时,会将文件从一个文件夹移动到 ftp 服务器上的另一个文件夹。我想在完成后闪烁一条消息。但我正在使用 Session::flash 但它不起作用。如果我错了,请检查代码 sn-ps 并纠正我。文件正在正确移动。

test.blade.php

$(document).ready(function(){
    $(window).load(function(){
        $.ajax({
            type: 'POST',
            url: '{{url('/ftp')}}',
            success: function(data) {
              alert(data);
              console.log(data);
            }
        });
      });
    });

TestController.php

function ftp()
{
  $ftp_server;
  $ftp_username;  
  $ftp_userpass; 
  $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
  // $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

  if (@ftp_login($ftp_conn, $ftp_username, $ftp_userpass))
  {
    echo "Connection established.<br>";
    $path = "./test";
    $file = "ftp_test.txt";
    $file_list = ftp_nlist($ftp_conn,$path);

    if(in_array($file,$file_list))
    {
      $old_path="./test/ftp_test.txt.";
      $new_path="./test1/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.<br>";
        Session::flash('success','File moved from a to b');
      }
      else {
        echo "File not moved.";
      }
    }
    else
    {
      $old_path="./test1/ftp_test.txt.";
      $new_path="./test/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.<br>";
        Session::flash('success','File moved from b to a');
      }
      else {
        echo "File not moved.";
      }
    }
  }
  else
  {
    echo "Couldn't establish a connection.<br>";
  }



  // close connection
  ftp_close($ftp_conn);
}

}

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 由于您使用 ajax 调用会话将无法正常工作,请使用 jquery 处理显示消息场景
  • @Kuru 你能帮我吗?
  • 如果您使用的是 AJAX,则无需设置会话,只需回显该消息,您将在响应中收到该消息
  • @RajShah 检查答案
  • 不会对您的问题有太大帮助,但是当使用Session::flash() 时,您需要在之后重定向到另一个页面并在刀片文件中的某处有代码以显示相应的警告、通知、错误等。

标签: php ajax laravel session


【解决方案1】:

在刀片中:

$(document).ready(function(){
$(window).load(function(){
    $.ajax({
        type: 'POST',
        url: '{{url('/ftp')}}',
        success: function(data) {
          $('#message').text(data);
          console.log(data);
        }
    });
  });
});

控制器

 function ftp()
{
  $ftp_server;
  $ftp_username;  
  $ftp_userpass; 
  $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
  // $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

  if (@ftp_login($ftp_conn, $ftp_username, $ftp_userpass))
  {
    echo "Connection established.<br>";
    $path = "./test";
    $file = "ftp_test.txt";
    $file_list = ftp_nlist($ftp_conn,$path);

    if(in_array($file,$file_list))
    {
      $old_path="./test/ftp_test.txt.";
      $new_path="./test1/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.<br>";

      }
      else {
        echo "File not moved.";
      }
    }
    else
    {
      $old_path="./test1/ftp_test.txt.";
      $new_path="./test/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.";

      }
      else {
        echo "File not moved.";
      }
    }
  }
  else
  {
    echo "Couldn't establish a connection.<br>";
  }



  // close connection
  ftp_close($ftp_conn);
}

}

我所拥有的只是删除了您的会话内容。在您的刀片中创建一个 ID 为 message 的元素(您要在其中显示消息),然后将其附加到结果中。请注意,您的结果必须只是文本,当您在 php 脚本中回显时,ajax 会将这些文本输出作为数据返回并返回给您。您可以根据需要设置消息元素的样式。

如果您打算以 html 数据形式返回,请使用 $('#message').html(data); 而不是 $('#message').text(data);

【讨论】:

  • 我之前已经这样做了,但是我想要会话 flash 所做的 flash 消息。我在其他功能中使用相同的 Session::flash() ,它工作正常。检查以下代码,它来自不同的控制器。 ajaxcontroller.php ,这也将值返回给ajax调用并且工作正常。否则 { $data['message']=1; Session::flash('error', '电话号码已经存在');
【解决方案2】:

正如@kerbholz 所说,如果您只需要使用 Session::flash 显示消息,则不能使用 ajax
以下是显示 Flash 消息的方法

在您的控制器中

Session::flash('success', 'It\'s a flash message !');
return redirect()->back();

在您的刀片视图中

@if (Session::has('success'))

    <div class="alert alert-success">{{ Session::get('success') }}</div>

@endif

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多