【问题标题】:how to protect to delete previous value of class element如何保护删除类元素的先前值
【发布时间】:2016-02-09 19:05:06
【问题描述】:

我在 laravel 中有控制器类,其中我有一个函数 create() 和一个变量附件,我通过 ajax 调用函数 我的班级代码是。

class AttachmentController extends Controller
{
    public  $_attachments;

    public function create()
    {

            $this->_attachments[]=  'test';

            var_dump($this->_attachments);



    }

问题是每次我通过 ajax 调用它时,它都会在附件数组的 0 索引处返回“测试”。但我想如果我第一次调用创建函数,它会给我测试 0 索引,但下次我调用它时。它给了我对 0 和 1 索引的“测试”等等.. 怎么可能请帮助我

【问题讨论】:

  • 因为_attachments 是一个数组。每次调用函数时,您都在为变量添加值。
  • 我在附件变量中添加值,它是一个数组..但每一次它都给我在 0 索引上的“测试”..但我不希望这样我想要一次调用函数它给了我 array(0=>'test') 但是当我第二次调用函数时它应该给我这样的输出 array(0=>'test',1=>'test') 但它仍然给我 array(0 =>'测试')
  • 我听不懂你。你希望你的输出如何?举个例子吧。
  • 好的,让我解释一下,如果我第一次调用 create 函数,它会给我输出 [0=>'test'] 但是当我第二次调用它时。它仍然给我相同的输出,但它应该给我 [0=>'test',1=>'test']
  • HTTP 请求没有从一个连接到下一个。因此,如果您通过网络浏览器多次调用createAction,它总是会像您第一次调用它一样。听起来您想“记住”附件,在这种情况下,您需要将其存储在某个地方(例如 sessiondatabasefilesystem)。

标签: php ajax class oop laravel


【解决方案1】:

要保留请求之间的值,您需要将它们存储在某个地方,另一种方法是使用会话,如下例所示,有关更多信息,请参阅https://laravel.com/docs/session

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class AttachmentController extends Controller
{
    public function create(Request $request)
    {   
        $request->session()->push('attachments', 'test');
        var_dump($request->session()->get('attachments'));
    }   
}

【讨论】:

  • 感谢上述解决方案的回复并没有解决我的问题,事实上我是使用 dropzone.js 上传附件。当我上传单个文件时它工作正常,但我上传多个文件但它仍然无法正常工作
  • 所以要一个一个上传,保存已经上传的文件名?或者您想一次上传所有文件?
【解决方案2】:

试试这样的。

$_attachments[] =  Session::get('test');
$_attachments[] = 'test';
Session::get('test', $_attachments);
dd(Session::get('test'));

如果这是您想要的,请告诉我。

【讨论】:

    【解决方案3】:

    由于 HTTP 驱动的应用程序是无状态的,会话提供了一种方式 跨请求存储有关用户的信息。

    class AttachmentController extends Controller
    {
        public function create()
        {
            $attachments = Session::get('attachments', array());
    
            $attachments[] = 'test';
    
            Session::put($attachments);
    
            var_dump($this->_attachments);
        }
    }
    

    延伸阅读:Laravel Session

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-18
      • 2012-04-09
      • 2020-07-30
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2011-03-09
      • 2011-07-05
      相关资源
      最近更新 更多