THẢO LUẬN

thg 7 28, 2019 8:44 SA

vậy có cách nào lấy tất cả các mã loại sản phẩm mà k cần tạo "EditProductViewModel.cs" k ạ, e muốn viết vào luôn ProductController thì làm như nào, e search mãi chả thấy 😦(

0

đã đi được tới series 2, tks bác 😄

0
thg 7 28, 2019 5:40 SA
  • Thứ nhất đối với việc sử dụng API Resouces có sẵn của Laravel thì với mỗi model bạn sẽ phải định nghĩa 2 class. Theo bài viết trên của mình thì ví dụ bạn có model User thì bạn cần định nghĩa 2 class với API Resources lần lượt là:
use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request)
    {
        return [
           'id' => $this->id
            'username' => $this->username,
            'email' => $this->email,
            'avatar' => $this->avatar,
        ];
    }
}

Class này sẽ có nhiệm vụ với mỗi bản ghi dữ liệu của model user thì nó sẽ biến đổi thành như trên - tương ứng với hàm transform() trong package trong bài viết của mình. Nếu bạn muốn biến kết quả trả về là một collection và đính kèm thêm data gì đó khác như message thông báo mặc định thì sẽ phải định nghĩa thêm một class mới là:

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class UserCollection extends ResourceCollection
{
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
           'meta' => [
               'message' => 'Success'
           ],
        ];
    }
}

Thì với một danh sách các user truyền vào qua controller như :

return new UserCollection(User::all());

Còn với fractal bạn chỉ cần tạo thêm hàm là addMeta() như sau:

fractal($users, new UserTransformer)->addMeta(['message' => 'Success']);
  • Thứ hai là API Resources của Laravel theo mình đọc thì nó không hỗ trợ việc $defaultIncludes hay $availableIncludes cho các relation của model nghĩ là nếu model của bạn có relation thì bạn sẽ phải viết sẵn vào trong UserResource như này:
<?php
use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request)
    {
        return [
           'id' => $this->id
            'username' => $this->username,
            'email' => $this->email,
            'avatar' => $this->avatar,
            'posts' => PostResource::collection($this->posts),
        ];
    }
}

Nhìn chung mình đã từng thửu dùng thằng này từ lúc nó mới ra nhưng thấy không được linh hoạt lắm nên không sử dụng luôn từ đó. Còn hiện tại thì không rõ nó có update gì không vì mình đọc trên docs vẫn thấy không có gì mới hẳn.

+2
thg 7 28, 2019 4:31 SA

Chuyên nghiệp quá 😍

+1
thg 7 28, 2019 2:50 SA

Laravel từ bản 5.5 đổ đi có thể tạo Resources. Cách hoạt động của nó em thấy cũng tương đồng so với cái Fractal - Transformers. A thấy thằng Fractal - Transformers có ưu điểm gì hơn so với thằng resources

+1
thg 7 27, 2019 2:18 CH

Chào anh, em cũng đang nghiên cứu gRPC với nodejs, nhưng em gặp phải 1 vấn đề là không cách nào debug được ở code server, em sử dụng visual studio code.

+1
thg 7 27, 2019 11:38 SA

Mình có ý hiểu Host + Could computer ... cũng đơn giản chỉ một cái máy tính, máy tính thì đều là máy tính. Trong bài viết mình chỉ mô tả việc deploy lên "máy tính" của mình (Macbook pro 2017), vì nó có những phần việc chung nhất cho việc deploy. Nếu được chọn một dịch vụ để deploy sản phẩm online thì mình sẽ chọn EC2 của Amazon vì mình biết mỗi thằng này 😃

0
thg 7 27, 2019 11:34 SA

Ứng dụng C# gọi tới api curl -X GET http://127.0.0.1:12480/classify?image_url=https://kenh14cdn.com/2016/sunflower-002-1470471840262.jpg' , ứng dụng sẽ nhận được kết quả, hoặc sử dụng API upload file. Bạn hãy xem ứng dụng C# như một client, trong bài viết mình cùng curl như một client.

0
thg 7 27, 2019 11:32 SA

Đúng rồi, bài viết của mình có tiêu đề [Nodejs] Dùng selenium, cheerio để crawl dữ liệu , trong khi mục đích chính của selenium là công cụ thực hiện kiểm thử tự động các ứng dụng web.

0
thg 7 27, 2019 11:30 SA

Mình cũng vậy!

0
thg 7 27, 2019 11:30 SA

Puppeteer là Chrome headless browser nghĩa là chỉ chạy auto trên trình duyệt chrome. Chỉ so sánh Selenium với Puppeteer, cheerio là một thư viện nodejs, nó không có cùng tính chất với 2 thằng trên nên chúng không cùng nhóm để so sánh. Selenium thì chạy được nhiều loại trình duyệt miễn là trình duyệt đó có driver hỗ trợ cho Selenium.

0
thg 7 27, 2019 11:27 SA

Được, mục đích của Selenium chính là làm việc này. Bạn có thể chạy song song các Selenium node container bằng docker (mỗi container là một trình duyệt) hoặc bạn có thể tải trực tiếp các driver của các trình duyệt để chạy trực tiếp trên cùng một máy tính.

0
thg 7 26, 2019 5:57 CH

Kể từ React 16, Reac-addons-perf không được hỗ trợ. Vui lòng sử dụng các công cụ định hình của trình duyệt của bạn để hiểu rõ hơn về thành phần nào được kết xuất lại.

0
thg 7 26, 2019 4:46 CH

Cảm ơn bài viết của a 😃) +1

0
thg 7 26, 2019 10:46 SA

ưerewrewr

0
thg 7 26, 2019 8:15 SA

Cám ơn bạn, mình sửa được rồi

+1
thg 7 26, 2019 8:10 SA

Goodluck nhé. Happy coding!

0
thg 7 26, 2019 8:00 SA

oh. Chắc tại mình ko có sử dụng cái insert rồi. Cám ơn bạn. Để mình xem lại nhé

0
thg 7 26, 2019 7:57 SA

Àh, thêm nữa, lúc bạn insert message vào list. Bạn phải insert vào index 0 nhé. _messages.insert(0, message) Kết hợp với để thuộc tính reverse = true

0
thg 7 26, 2019 7:53 SA

Cám ơn bạn. Nãy mình có thử rồi mà nó code mình nó cũng vậy. để mình coi lại

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí