Summernote(数据未保存在数据库中)(laravel 5.2)

Posted

技术标签:

【中文标题】Summernote(数据未保存在数据库中)(laravel 5.2)【英文标题】:summernote (data not saving in DB) (laravel 5.2) 【发布时间】:2017-01-03 22:47:58 【问题描述】:

我正在使用 laravel 5.2 并在站点中集成 Summernote js。

我希望当用户填写表格并点击保存时,所有数据都存储在数据库中。

它适用于单个字段,但不适用于两个或更多。

我的看法:

    <form action="route('account')" id="acc" class="ac" method="post">
  <div class="col-lg-3"><label>Estado</label>

  @foreach($accounts as $account)
  @if($user== $account->user)
  !! $account->estado !!
  <textarea  style="display:none;" name="textfield4" id="textfield4"></textarea></div>

  <div class="col-lg-2 es" id="estado"></div>


 <a span class="fa fa-heartbeat"  id="sex" aria-hidden="true">
    </span></a>
</div>
  <div class="col-lg-4"></div>
</div>
<div class="row">
  <section class="col-lg-3"><div><br><label for="textfield5">I'm Good At:</label>


   <p>!! $account->goodat !!</p>


   <textarea  style="display:none;" name="textfield5" id="textfield5"></textarea></div>
  <div class="col-lg-2 es" id="goodat"></div>
   @endif
  @endforeach

我的 JS 在视图中:

 <script>

var edit = function() 
  $('#estado').summernote(focus: true);
   $('#goodat').summernote(focus: true);
;

var save = function() 
  var makrup = $('#estado').summernote('code');
  $('#estado').summernote('destroy');

  var makrup = $('#goodat').summernote('code');
  $('#goodat').summernote('destroy');
;

$(".acc").submit(function(e) 
     var self = this;
     e.preventDefault();


    //$('#estado').summernote('destroy');
     var estado = $('#estado').summernote('code');
     $("#textfield4").html(estado); //populate text area



      var goodat = $('#goodat').summernote('code');
     $("#textfield5").html(goodat); //populate text area
     self.submit();
     return false; 


);



</script>

我的控制器:

 se App\Account;

use Illuminate\Support\Facades\Auth;


class AccountController extends Controller


 public function account(Request $request)
    

        $account = new Account();
        $account->estado = $request->input('textfield4');
        $account->goodat = $request->input('textfield5');
        $request->user()->accounts()->save($account);


        return redirect()->route('myplace',['username'=>Auth::user()->username]);
    




【问题讨论】:

dd($request) 是一个很好的第一步,但是您应该在请求转储中显示属性和请求的内容。您也可以尝试 dd($request->input()) 以获得更清晰的结果 第一个疯狂的猜测是您不应该使用 .html() 而是使用 .val() 设置 textarea 内容 @FrankProvost 在做 dd($request->input()) 我得到这个:array:4 [▼ "textfield4" => "" "textfield5" => "" "textfield9" = > "" "_token" => "HBJGDY760fxF6v5b2eJSOA2G0f2D0saMp3KtTZRg" ] 也 .val() 没有工作。 如您所见,您实际上是在发送空字符串 - 因此您的问题出在前端。如果您使用的是 chrome,请按 f12 打开开发者工具。转到控制台并输入 $('#estado').summernote('code'); - 确保这会返回您想要的输入 【参考方案1】:

您是否验证了请求输入存在于函数中?

也许你可以检查一下:

dd($request);

【讨论】:

我已将屏幕截图包含在问题中 这不是一个完整的答案,这应该是一个评论【参考方案2】:

正如聊天https://chat.***.com/rooms/122478 中所讨论的那样,实际的问题不见了

$(document).ready(function()  ... );

$(".acc").submit(function(e)  ... );

表单的实际类是 .ac 而不是 .acc - 但是 id 是 acc

还必须更改编辑,因为当包装在就绪函数中时,无法从 onclick 事件中直接调用它。

在讨论中,您可以找到页面的标记 - 将其粘贴到完整的 IDE 中会显示大量错误 - 因此我将提供一些有关代码状态的更多提示。

您有很多很多重复的 ID。不要将 id 设置为不需要由 id 标识的对象 - 没有必要。如果你有一个循环,你不能简单地说 id="example" - 每次循环它都会创建一个具有相同 id 的实体。 jQuery 将无法识别它们。如果您想让它们全部使用类 - 如果您想直接识别它们,请在循环中使用增量器 错误使用标记:&lt;ul&gt; 标签中有 div,不应该这样做。 &lt;/br&gt; 使用 &lt;br&gt;&lt;br/&gt; 是错误的 很多未结束的标签 label B'day: label (两次打开) form action="http://localhost:8000/account" id="acc" class="ac" method="post" 没有关闭 - 没有 &lt;/form&gt; 为此 - 不要忘记打电话表单::close()

试着找一个合适的编辑器来帮助你处理这些东西。我正在使用 intellij webstorm,它实际上要花一点钱(对学生免费)。

【讨论】:

以上是关于Summernote(数据未保存在数据库中)(laravel 5.2)的主要内容,如果未能解决你的问题,请参考以下文章

Summernote 文本未存储到数据库中

在数据库中保存summernote的问题

如何将通过summernote生成的大型base64图像保存在我的数据库中?

尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性

如何使用流星JS在summernote中收取数据?

Summernote 转换 html 代码失败