Yêu cầu thg 8 4, 2018 4:20 CH 946 0 4
  • 946 0 4
0

Hỏi về cách truyền 1 mảng trên route

Chia sẻ
  • 946 0 4

Em có 1 biến là mảng muốn truyền qua route, nhưng route k chịu(không thể chuyển mảng sang string), em có dùng serialize và json_encode nhưng nó báo là route k nhận được biến. Mọi người giúp em vấn đề này với ạ, em cảm ơn!!

Avatar Mango @vinhnguyen
thg 8 4, 2018 4:51 CH

Routing bạn đang dùng là gì thế 😃 của framework hay thư viện nào?

Avatar Lý Thiên Hưng @thienhungasd
thg 8 4, 2018 5:03 CH

của laravel đó anh, Route::get('confirm/{biến}', function) em muốn hỏi làm sao để truyền 1 mảng vào cái biến đó ạ

Avatar Lee Kim @k0nk0c0nline
thg 8 9, 2018 5:10 SA

//resources \views

<form class="" method="get" action="{{ route('confirm') }}"> @csrf

//routes Route::get("/confirm", "NameController@confirm")->name("confirm");

//App\Http\Controllers

use Illuminate\Http\Request;

class NameController extends Controller {

public function confirm(Request $request)
{
    dd($name = $request->toArray());
}

}

ps/ ý bạn là zậy hả. mình cũng mới tập làm laravel

4 CÂU TRẢ LỜI


Đã trả lời thg 8 4, 2018 11:11 CH
+2

Cái này bạn chỉ dùng Ajax để truyền request thôi bạn.. Có một ví dụ đơn giản mà mình muốn nêu lên ở đây như sau, để sau đó bạn có thể biến thiên và xử lý: Có một danh sách các bài viết, các bài viết đó chứa trong một series bài viết, như VIBLO của chúng ta vậy. Và giờ ta muốn thay đổi vị trí của chúng trong Series. Ta sẽ dùng Ajax để làm việc đó.. Code sẽ được giải thích như sau:

Ta có một mảng rỗng ban đầu, cứ mỗi lần ta tick và kéo một bài nào đó, dữ liệu mảng positions sẽ được gửi xuống Controller để xử lý.

Bạn có thể tham khảo và áp dụng vào Project của bạn. Cái này là ví dụ, ở Route ta không cần phải truyền một tham số gì cả.

function newUpdateData() {
      var positions = [];
      $('.updated').each(function() {
        positions.push([$(this).attr('data-index'), $(this).attr('data-position')]);
        $(this).removeClass('updated');
      });

      $.ajax({
        url: '{{ URL::route('series.update.position') }}',
        method: 'POST',
        dataType: 'text',
        data: {
          positions: positions
        },
        success: function(response) {
          console.log(response);
        }
      });
    }

Chúc bạn thành công.

Chia sẻ
Đã trả lời thg 8 5, 2018 2:21 SA
+1

dạ cái này em làm gửi gmail để xác nhận ạ, khi người ta click vào link xác nhận mình sẽ lưu thông tin vào csdl, nên phải truyền qua route ạ.

Câu hỏi của bạn đặt chưa rõ ràng, vấn đề của bạn đang gặp chả liên quan gì tới câu hỏi bạn đặt cả. Mình nói thật đấy!


Mình nhắc lại flow gửi mail xác nhận một chút, giả sử trong tính năng đăng ký tài khoản nhé:

  1. Người dùng đăng ký tài khoản công
  • Tạo một activation token, là một chuỗi ngẫu nhiên, dài loằng ngoằng và unique.
  • Lưu nó vào bảng activation_tokens (user_id, token)
  1. Hệ thống gửi email xác nhận
  • Trong email xác nhận có một cái link, cái link này chứa token ở trên để xác thực rằng người đăng ký tài khoản cũng là chủ nhân email.
  1. Người dùng click vào link xác nhận trong email, chuyển sang trang web của mình. (tạm gọi là route confirm nhé)
  • Hệ thống lấy token từ url, sau đó cầm nó tìm trong database xem là của tài khoản nào.
  • Nếu ko matched được thông tin user, thì báo lỗi và không làm gì cả.
  • Nếu matched thì thực hiện active tài khoản đấy, hoặc cập nhật gì đó lại vào database rồi xóa bỏ activation token.

Như bạn thấy, trong tính năng gửi email xác nhận ở trên chúng ta chỉ cần dựa vào activation token mà thôi. Và cái route confirm đấy nó có một params chính là chuỗi activation token.

Chia sẻ
Avatar Jimmy Nguyen @minhtuancnttk39
thg 8 5, 2018 9:39 CH

A nói cái e cũng hình dung được hình thức hoạt động của cái active account luôn.. tks a.. 😃

Đã trả lời thg 8 5, 2018 5:03 SA
+1

@thienhungasd Mình nghĩ thay vì dùng route parameter (biến bạn đang đề cập ở đây) bạn nên dùng query string (vì bạn đang dùng GET). Bạn có thể dùng một số package như query-string để format nếu dữ liệu ở dạng mảng (tất nhiên nếu bạn đang dùng ajax nhé). Hoặc PHP thì dùng http-build-query (maybe !?).

Chia sẻ
Đã trả lời thg 8 5, 2018 12:45 SA
0

dạ cái này em làm gửi gmail để xác nhận ạ, khi người ta click vào link xác nhận mình sẽ lưu thông tin vào csdl, nên phải truyền qua route ạ.

Chia sẻ
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í