Laravel:独特地识别foreach循环表中的按钮

时间:2015-04-27 16:09:58

标签: php arrays object laravel-4 routes

您好我有一个表单,用户可以在表单中输入一些信息,然后存储在数据库中(posts.sql)此数据库中表格中的所有先前行都显示在此表单下方:

见这里:http://i.imgur.com/kkExHkJ.png

我想知道如何唯一地标识每一行的“删除”和“更新”按钮,因为按钮不是数组本身的一部分;但只是在foreach循环中生成。

喜欢这样

@foreach ($posts as $post)
        <tr>
          <td>{{{ $post->id }}}</td>
          <td>{{{ $post->post_username }}}</td>
          <td>{{{ $post->post_title }}}</td>
          <td>{{{ $post->post_message }}}</td>
          <td><input type="button" onclick="alert('Post Deleted')" value="Delete"></td>
          <td><input type="submit" value="Update"></td>
        </tr>
@endforeach

然后执行此功能删除帖子。

function delete_post($id)
{
$sql = "delete from posts where id = ?";
DB::delete($sql, array($id));
}

并显示一个新页面,其中包含以下表单,我可以在其中更新单行。使用类似于下面的表格。

<form method="post" action="{{{ url('update_post_action') }}}">
            <input type="hidden" name="id" value="{{{ $post->id }}}">
        <table>
            <tr>
              <td>Post Message</td> 
              <td><input type="text" name="post_message"value="{{{ $post->post_message }}}"></td>
          </tr>
          <tr>
            <td colspan=2><input type="submit" value="Update item"></td>
          </tr>
        </table>
        </form>

3 个答案:

答案 0 :(得分:2)

如果您可以将按钮更改为:

<button name="delete" value="{{ $post->id }}">Delete</button>

然后你可以使用

if (isset($_POST['delete']))
{
    delete_post($_POST['delete']);
}

答案 1 :(得分:0)

如果您正在使用CRUD路由,则需要一个包含DELETE操作的表单以进行删除。更新是一个简单的URL:

<a href="posts/{!! $post->id !!}/edit">edit</a>

您可以使用css将其视为按钮。

如果您愿意,可以为每一行(和行动)添加表格

我给你一个带有javascript提交链接的样本,以及用于删除帖子的按钮提交样本。

@foreach ($posts as $post)
        <tr>
          <td>{{{ $post->id }}}</td>
          <td>{{{ $post->post_username }}}</td>
          <td>{{{ $post->post_title }}}</td>
          <td>{{{ $post->post_message }}}</td>
          <td>
              {!! Form::open(array('method' => 'DELETE', 'route' => array('posts.destroy', $post->id), 'id'=>'post_'.$post->id)) !!}
                <a href="javascript:$('#post_{{$item->id}}').submit();">delete link</a>
                <input type="submit" value="Delete button">
              {!! Form::close() !!}</td>
          <td><input type="submit" value="Update"></td>
        </tr>
@endforeach

答案 2 :(得分:0)

Hihi我能够通过向表中的表单添加操作然后将submission按钮的值作为routes.php文件中的变量来实现。

home.blade.php

          <td> <!-- Creates a New #Swaggy Button that links to routes to delete item --> 
            <form method="post" action="{{{ url('delete_post_action') }}}">
            <input type="hidden" name="delete_id" value="{{{ $post->id }}}">
            <input type="submit" class="btn btn-danger" value="Delete">
            </form>
          </td>

routes.php文件

Route::post('delete_post_action', function()
{   /* Get post->id from hidden input then delete row  */       
    $id = Input::get('delete_id');
    $sql = "delete from posts where id = ?";
    DB::delete($sql, array($id));

    /* Rebuild webpage */ 
    $sql = "select * from posts ORDER BY ID DESC";
    $current_posts = DB::select($sql);
    $results=$current_posts;

      return View::make('pages.home')->withposts($results);
});