保存ajax后更新表格

时间:2019-11-07 07:33:07

标签: yii2

我想在保存ajax之后更新表单数据。如果项目是新项目(ID-空),则会尝试每次创建一个新项目。还有一些后端生成的字段,保存后会出现。

class

表单字段产生这样的html:

public static void readDataFromFile(String filePath) throws FileNotFoundException
{
    List<Movie> movies = new ArrayList<Movie>();
    File file = new File(filePath); 
    Scanner sc = new Scanner(file); 

    while (sc.hasNextLine())
    {
        String txtLine = sc.nextLine();

        //Extract data from single from txt file row
        String[] data = txtLine.split(":");

        Movie movie = new Movie(data[0], data[1], data[2], data[3], data[4]);

        //Add to movies list
        movies.add(movie);

    }

    System.out.println("Unsorted-----------");
    System.out.println(movies);

    System.out.println("Sorting by director-----------");
    Collections.sort(movies, new DirectorSorter());
    System.out.println(movies);

    System.out.println("Sorting by producer-----------");
    Collections.sort(movies, new ProducerSorter());
    System.out.println(movies);
}

public static class Movie
{
    private String name;
    private String director;
    private String producer;
    private String rating;
    private String review;

    public Movie(){}

    public Movie(String name, String director, String producer, String rating, String review){
        this.name = name;
        this.director = director;
        this.producer = producer;
        this.rating = rating;
        this.review = review;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public String getProducer() {
        return producer;
    }

    public void setProducer(String producer) {
        this.producer = producer;
    }

    public String getRating() {
        return rating;
    }

    public void setRating(String rating) {
        this.rating = rating;
    }

    public String getReview() {
        return review;
    }

    public void setReview(String review) {
        this.review = review;
    }

    @Override
    public String toString() {
        return "Movie : " + name + " - " + director + " - " + producer + " - " + rating + " - " + review + "\n";
    }
}


public static class DirectorSorter implements Comparator<Movie>{

    @Override
    public int compare(Movie o1, Movie o2) {
        return o1.getDirector().compareTo(o2.getDirector());
    }
}

public static class ProducerSorter implements Comparator<Movie>{

    @Override
    public int compare(Movie o1, Movie o2) {
        return o1.getProducer().compareTo(o2.getProducer());
    }
}

比起控制器,我返回了这个值(尝试了不同的变化):

<?php $form = ActiveForm::begin([
        'method' => 'post',
        'action' => ['category/save', 'id' => $category ? $category->id : ''],
        'enableClientValidation' => true,
//        'enableAjaxValidation' => false,
        'validateOnChange' => false,
        'validateOnBlur' => false,
        'validateOnSubmit' => true,
        'options' => [
            'id' => 'customer-update',
            'class' => 'ajax-submit',
        ],
        'fieldConfig' => [
            'template' => '<div class="row-content-col1">{label}</div><div class="row-content-col2">{input}{error}</div>'
        ]
    ]); ?>
.......

<?php echo $form->field($category, 'url')->textInput(['class' => 'ip', 'readonly' => true]); ?>

......

<?php $form->end(); ?>

ajax表单的有效响应是什么?还是有其他方法可以处理所有这一切?

1 个答案:

答案 0 :(得分:0)

Pjax对于您的挑战真的很有用,只需在Pjax小部件内添加表单即可。将表单操作添加到新路径(例如site / control-data)。 在您的操作方法中执行您想要的操作,但是发送如下响应:

<StackLayout Orientation="Vertical">
        <RelativeLayout>

            <ListView ItemsSource="{Binding Funcionarios}"
                  HasUnevenRows="True"
                  Margin="20"
                  ItemTapped="ListView_ItemTapped">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout Orientation="Horizontal">

                                <image:CircleImage Source="{Binding Imagem}" Aspect="AspectFill" WidthRequest="60" 
                                                   HeightRequest="60" BorderColor="Black" BorderThickness="2">

                                </image:CircleImage>
                                <StackLayout Orientation="Vertical">
                                    <Label Text="{Binding Nome}" FontSize="Large"/>
                                    <Label Text="{Binding Zona}"/>
                                    <CheckBox IsChecked="False" />
                                </StackLayout>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </RelativeLayout>
    </StackLayout>

这是您必须做的一般事情。 但是也许您在使用jquery或pjax时遇到问题,或者需要更多数据,但是所有问题都有答案,

请参见Pjax for ActiveForm