2

現在、Laravel フレームワークを使用してシステムを開発しています。とはいえ、私はまだ MVC アーキテクチャにあまり詳しくありません。

システムを開発しているときに、フォームを持つこのブートストラップ モーダルに関連する問題に遭遇しました。データベースに送信できるように関数を入れたいと思います。

私はいくつかのチュートリアルに従いましたが、モーダルの代わりにページを使用しているため、解決策が思いつきませでし

したがって、モーダルの 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}} を使用して ...どちらの方法でも

次に、テキストエリアにはIDと名前が必要です

<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();

 }

編集(Ajax用)

このスクリプトをページの下部に追加します...

<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完全にテストされていません....微調整が必​​要です。さらに、コントローラーにリダイレクトがあるという事実により、おそらく動作しなくなります。これは、エコーされたJson文字列が期待されるためです。

しかし、これらは基本的なことであり、あなたが自分で続けるための基盤はそこにあります...

于 2013-06-08T22:55:46.727 に答える