2

我目前正在使用 Laravel 框架开发一个系统。不过,我对 MVC 架构还不是很熟悉。

在开发系统时,我遇到了一个与此引导模式相关的问题,该模式中包含一个表单。我想将函数放入其中,以便可以将其提交到数据库。

我遵循了几个教程,但没有提出解决方案,因为它们都使用pages而不是modals

所以,这里是模态的 HTML:

<div class="modal hide fade" id="linkSettings">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal">×</button>
    <h3>Add New Link</h3>
  </div>

  <div class="modal-body">
      <div class="control-group">
      <label class="control-label" for="focusedInput">Add A Link:</label>
      <div class="controls">
        <textarea class="autogrow"></textarea>
      </div>
      </div>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn" data-dismiss="modal">Close</a>
    <a href="#" class="btn btn-primary">Save changes</a>
  </div>
</div>

这是上述模式的Javascript:

$('.btn-settingLink').click(function(e){
    e.preventDefault();
    $('#linkSettings').modal('show');
});

现在,我如何将函数放入控制器中,以便每当用户按下保存更改按钮时,它将值存储<textarea>到数据库中?与Javascript代码有什么关系吗?我是否需要使用{{Form::open('main/addLink','POST')}}表单将其值传递给控制器​​和模型?

基本上,我想要的只是通过使用模态来拥有 CRUD 功能。

4

1 回答 1

2

首先,您需要创建一个带有路由的表单......

<form method="post" action="{{URL::to('Link/addlink')}}>

或者像你上面展示的那样,用你的 Blade {{Form}} ...无论哪种方式

然后你的 textarea 需要一个 id 和 name

<textarea id="mytext" name="mytext"></textarea>

所以你的 HTML 变成了……

<form method="post" action="{{URL::to('Link/addlink')}}>
  <div class="modal-body">
      <div class="control-group">
      <label class="control-label" for="focusedInput">Add A Link:</label>
      <div class="controls">
        <textarea id="mytext" name="mytext" class="autogrow"></textarea>
      </div>
      </div>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn" data-dismiss="modal">Close</a>
    <input type="submit" id="submit" name="submit" class="btn btn-primary">Save changes</input>
  </div>
</form>

然后在您的链接控制器中...或您实际发送此表单的任何地方..不知道您的控制器被命名为:)

public function addlink(){

$input = Input::all();
//whatever validation you wanna do, with error handling etc...not gonna provide that,            thats up to you

$yourmodel = New Model;
$yourmodel->text = $input['mytext'];
$yourmodel->save();

Return Redirect::back();

 }

编辑(对于阿贾克斯)

在页面底部添加此脚本...

<script>
$(document).ready(function(){

$('input#submit').click(function(e){
   e.preventDefault();
   var text = $('#mytext').val();
   var url = 'your url' //we were using Link/addlink in the other example

  $.ajax({
   type: "POST",
   url: url,
   data: { mytext: text },
   success: function(){
        //Probably add the code to close your modal box here if successful
        $('#linkSettings').hide();
   },
   });
 });
});
</script>

PS 完全未经测试....您需要进行一些调整,再加上您的控制器具有 Redirect 的事实可能会使其无法正常工作,因为这只会期待一个回显的 Json 字符串

但这些都是具体细节,我认为基础是你自己继续的基础......

于 2013-06-08T22:55:46.727 回答