Forms 更新类别

Forms 更新类别,forms,laravel,Forms,Laravel,我非常接近一个解决方案,但我被卡住了。我有一个类别页面,其中类别在同一页面上创建和删除。我添加了一个编辑功能,编辑链接,用户可以在同一页面上编辑类别,而不是创建另一个静态页面并重复相同的代码 这是我的控制器更新功能 public function postEdit() { $category = Category::find(Input::get('id')); if ($category) { $category->update(); r

我非常接近一个解决方案,但我被卡住了。我有一个类别页面,其中类别在同一页面上创建和删除。我添加了一个编辑功能,编辑链接,用户可以在同一页面上编辑类别,而不是创建另一个静态页面并重复相同的代码

这是我的控制器更新功能

public function postEdit() {
    $category = Category::find(Input::get('id'));

    if ($category) {
        $category->update();
        return Redirect::to('admin/categories/index')
        ->with('message', 'Category Updated');
    }

    return Redirect::to('admin/categories/index')
        ->with('message', 'Something went wrong, please try again');
}
这是一个类别页面,用户可以在其中查看、创建、编辑和删除列出的类别。我正在尝试创建一个条件,该条件声明显示“创建表单”为默认值,并且仅在单击“编辑”按钮时显示“编辑表单”

@extends('layouts.main')

@section('content')

<div id="admin">

    <h1>Categories Admin Panel</h1><hr>

    <p>Here you can view, delete, create, and edit new categories.</p>

    <h2>Categories</h2><hr>

    <ul>
        @foreach($categories as $category)
            <li>
                {{ $category->name }} - 
                {{ Form::open(array('url'=>'admin/categories/destroy', 'class'=>'form-inline')) }}
                {{ Form::hidden('id', $category->id) }}
                {{ Form::submit('delete') }}
                {{ Form::close() }}

                {{ Form::open(array('url'=>'admin/categories/edit', 'class'=>'form-inline'))}}
                {{ Form::hidden('id', $category->id) }}
                {{ Form::submit('edit') }}
                {{ Form::close() }}
            </li>
        @endforeach
    </ul>

    <h2>Create New Category</h2><hr>

    @if($errors->has())
    <div id="form-errors">
        <p>The following errors have occurred:</p>

        <ul>
            @foreach($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div><!-- end form-errors -->
    @endif
    <php
    if(isset(url=>'admin/categories/destroy')) {
        {{ Form::open(array('url'=>'admin/categories/create')) }}
        <p>
            {{ Form::label('name') }}
            {{ Form::text('name') }}
        </p>
        {{ Form::submit('Create Category', array('class'=>'secondary-cart-btn')) }}
        {{ Form::close() }}

    }else{

        {{ Form::open(array('url'=>'admin/categories/edit')) }}
        <p>
            {{ Form::label('name') }}
            {{ Form::text('name') }}
        </p>
        {{ Form::submit('Create Category', array('class'=>'secondary-cart-btn')) }}
        {{ Form::close() }}

    }
?>

</div><!-- end admin -->

@stop
Javascript

<script>
function showEditForm(id) { 
id.innerHTML="


{{ Form::open(array('url'=>'admin/categories/edit')) }}
    <p>
        {{ Form::hidden('id', $category->id) }}
        {{ Form::label('name') }}
        {{ Form::text('name') }}
    </p>
    {{ Form::submit('Edit Category', array('class'=>'secondary-cart-btn')) }}
    {{ Form::close() }}

";

}
</script>

函数showEditForm(id){
id.innerHTML=”
{{Form::open(数组('url'=>'admin/categories/edit'))}

{{Form::hidden('id',$category->id)}
{{Form::label('name')}
{{Form::text('name')}

{{Form::submit('Edit Category',array('class'=>'secondary-cart-btn'))} {{Form::close()}} "; }
事实上,你的问题很好,由于你的咆哮,我给了-1分。尽管如此,这个问题确实值得回答

让我们总结一下你的问题。你有三个主要任务

  • 创造
  • 编辑
  • 删除
用于创建

很简单。使用两列布局。在侧栏上,显示要创建类别的表单。然后使用ajax提交。e、 g

$(function(){
    $(document).on('submit','#writeCategory', function(e){

                var f = $(this);
                e.preventDefault();
                var d = f.serialize();

                $.ajax({
                    type        :       POST,
                    url         :       //your url,
                    data        :       d
                }).done(function(data){
                    alert('submitted');
                    //you can also prepend/append the submitted data after successful submission
                }).fail(function(x,h,r){
                    alert('error occured')
                });                
    });
});

用于编辑:

对于编辑,可以使用。该页面包含站点中的所有演示、文档


用于删除:

我要提到一种非常简单的方法。使用
数据-
属性。如果要删除类别,可能只需要id

假设您正在循环以显示所有类别。执行此操作时,将id存储在一个属性中,例如,
数据id
。并为每个类别编写一个删除链接

e、 g.单个类别实体的删除链接可能如下所示:

休息很容易。只需使用ajax并删除链接。e、 g

$(function(){
        $('.delete').click(function(e){
            e.preventDefault();
            var a = $(this);            
            var answer = confirm('Are you sure you want to delete this?');
            if (answer)
            {
                
                    $.ajax({
                        type        :     'post',
                        url         :       //your url,
                        data        :       {id:a.attr('data-id')}  
                    }).done(function(data){
                        alert('deleted');
                    }).fail(function(x,h,r){
                        alert('error occured');
                    });
            }

        });
    });
您也可以修改它。e、 g.删除后,如果以表格方式显示类别,可以向上滑动该行(其中包含指定类别信息),暗示该类别已被删除

加成

查看:

有很多javascript模型窗口插件。只需选择一个,然后通过ajax显示详细信息

所有4项任务,在一个地方完成


注意,这里我使用jQuery只是为了方便。如果你想要纯javascript,你也可以这样写

创建一个编辑按钮,并在其上附加一个带有JavaScript的
onclick
事件处理程序,事件处理程序应该显示编辑表单。这是一个好主意,但由于JavaScript可以在所有浏览器上被禁用且不处于活动状态,因此有一种方法可以使用php和laravel来实现。在URL中传递一个参数,在您的视图中,检查该参数是否存在。如果是,则显示编辑表单,否则不显示。当用户第一次加载页面时,您可以有一个基本上指向同一页面的链接,但在
href
属性中将参数附加为查询字符串。然后,他们会点击它来显示编辑表单。
顺便说一句,如果你是主持人并关闭我的问题,我会屏蔽我的IP地址,在网络中抛出一百万个IP地址,然后用临时电子邮件一次又一次地注册。
-1对此,我通过查看此项基本上理解了参数,在我的情况下,参数是什么?对不起,我现在很累。谢谢你的回答。我决定只获取类别id作为产品id并传递变量。
$(function(){
        $('.delete').click(function(e){
            e.preventDefault();
            var a = $(this);            
            var answer = confirm('Are you sure you want to delete this?');
            if (answer)
            {
                
                    $.ajax({
                        type        :     'post',
                        url         :       //your url,
                        data        :       {id:a.attr('data-id')}  
                    }).done(function(data){
                        alert('deleted');
                    }).fail(function(x,h,r){
                        alert('error occured');
                    });
            }

        });
    });