JavaScript ਅਤੇ ਬਲੇਡ ਨਾਲ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ: Laravel 10 ਡਾਇਨਾਮਿਕ ਇਨਪੁਟ ਫਾਰਮ

Form

Laravel 10 ਵਿੱਚ JavaScript ਨਾਲ ਪੁਰਾਣੇ ਫਾਰਮ ਡੇਟਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ

Laravel 10 ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਰੂਪਾਂ ਦਾ ਵਿਕਾਸ ਕਰਦੇ ਸਮੇਂ, ਇੱਕ ਆਮ ਚੁਣੌਤੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲਤਾ ਤੋਂ ਬਾਅਦ ਉਪਭੋਗਤਾ ਇੰਪੁੱਟ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਹੈ। ਬਲੇਡ ਟੈਂਪਲੇਟਸ ਵਿੱਚ, ਇਸ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਨਾਲ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਸਹਾਇਕ ਫੰਕਸ਼ਨ, ਜੋ ਪਹਿਲਾਂ ਦਰਜ ਕੀਤੇ ਮੁੱਲਾਂ ਨੂੰ ਬਹਾਲ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, JavaScript ਨਾਲ ਫਾਰਮ ਖੇਤਰਾਂ ਨੂੰ ਜੋੜਨ ਵੇਲੇ ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਗਤੀਸ਼ੀਲ ਵਰਤੋਂ ਕਰਨ ਲਈ ਵਿਸ਼ੇਸ਼ ਹੈਂਡਲਿੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਮੇਰੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ, ਮੈਂ ਇੱਕ ਸਿਸਟਮ ਵਿਕਸਿਤ ਕਰਦੇ ਸਮੇਂ ਇਸ ਮੁੱਦੇ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਜੋ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਇਨਾਮ ਜੋੜਨ ਅਤੇ ਹਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਪ੍ਰਮਾਣਿਕਤਾ ਫੇਲ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਫਾਰਮ ਨੂੰ ਪੁਰਾਣੇ ਇਨਾਮ ਡੇਟਾ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਉਸ ਅਨੁਸਾਰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਲਾਰਵੇਲ ਦਾ ਫੰਕਸ਼ਨ ਬਲੇਡ ਦੇ ਅੰਦਰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ ਇਸਨੂੰ JavaScript ਜੋੜਨ ਵਾਲੇ ਤਰਕ ਨਾਲ ਜੋੜਨਾ ਔਖਾ ਹੋ ਸਕਦਾ ਹੈ।

ਸਮੱਸਿਆ ਦੀ ਜੜ੍ਹ ਇਸ ਗੱਲ ਵਿੱਚ ਹੈ ਕਿ ਬਲੇਡ ਟੈਂਪਲੇਟਸ ਅਤੇ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਡੇਟਾ ਨੂੰ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਕਿਵੇਂ ਵਿਆਖਿਆ ਕਰਦੇ ਹਨ। JavaScript ਦੇ ਨਾਲ ਨਵੇਂ ਤੱਤ ਜੋੜਦੇ ਸਮੇਂ, ਮੈਨੂੰ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਪਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਪਰ ਅਜਿਹਾ ਕਰਨ ਲਈ ਸੰਟੈਕਸ ਹਮੇਸ਼ਾ ਸਿੱਧਾ ਨਹੀਂ ਹੁੰਦਾ। ਇਸ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੋਣਾ ਪੰਨਾ ਰੀਲੋਡ ਕਰਨ ਤੋਂ ਬਾਅਦ ਮਹੱਤਵਪੂਰਨ ਡੇਟਾ ਦੇ ਨੁਕਸਾਨ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ।

ਇਹ ਗਾਈਡ ਤੁਹਾਨੂੰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਇੱਕ ਵਿਹਾਰਕ ਪਹੁੰਚ ਵਿੱਚ ਲੈ ਕੇ ਜਾਵੇਗੀ JavaScript ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਖੇਤਰਾਂ ਦੇ ਅੰਦਰ ਫੰਕਸ਼ਨ. ਅਸੀਂ ਖੋਜ ਕਰਾਂਗੇ ਕਿ ਨਵੇਂ ਇਨਪੁਟਸ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਕਿਵੇਂ ਜੋੜਿਆ ਜਾਵੇ ਅਤੇ ਲਾਰਵੇਲ 10 ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਦੀ ਸਹੀ ਧਾਰਨਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾਵੇ। ਆਓ ਅੰਦਰ ਡੁਬਕੀ ਕਰੀਏ!

ਹੁਕਮ ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ
@json() ਇਹ ਬਲੇਡ ਡਾਇਰੈਕਟਿਵ JavaScript ਵਿੱਚ ਵਰਤਣ ਲਈ PHP ਵੇਰੀਏਬਲਾਂ ਨੂੰ JSON ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਇਸ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਪੁਰਾਣੇ ਇਨਾਮ ਮੁੱਲਾਂ ਨੂੰ ਕੰਟਰੋਲਰ ਤੋਂ JavaScript ਵਿੱਚ ਪਾਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਗਤੀਸ਼ੀਲ ਰੂਪ ਨੂੰ ਸੰਭਾਲਣਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ।
Object.entries() ਇਹ JavaScript ਵਿਧੀ ਇਨਾਮ ਡੇਟਾ (ਇੱਕ ਵਸਤੂ) ਨੂੰ ਲੂਪ ਕਰਨ ਅਤੇ ਮੁੱਖ-ਮੁੱਲ ਜੋੜਿਆਂ ਨੂੰ ਵਾਪਸ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਵਿਅਕਤੀਗਤ ਇਨਾਮ ਜਾਣਕਾਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਕੇ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਹਰੇਕ ਇਨਾਮ ਨੂੰ ਜੋੜਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
insertAdjacentHTML() ਇੱਕ JavaScript ਵਿਧੀ ਜੋ ਕਿਸੇ ਤੱਤ ਦੇ ਅਨੁਸਾਰੀ ਇੱਕ ਖਾਸ ਸਥਿਤੀ ਵਿੱਚ HTML ਨੂੰ ਸੰਮਿਲਿਤ ਕਰਦੀ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਸਦੀ ਵਰਤੋਂ ਪੰਨੇ ਨੂੰ ਰੀਲੋਡ ਕੀਤੇ ਬਿਨਾਂ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਨਵੇਂ ਇਨਾਮ ਇਨਪੁਟਸ ਨੂੰ ਫਾਰਮ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
old() ਇੱਕ ਬਲੇਡ ਸਹਾਇਕ ਫੰਕਸ਼ਨ ਜੋ ਪ੍ਰਮਾਣਿਕਤਾ ਫੇਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਹਿਲਾਂ ਸਪੁਰਦ ਕੀਤੇ ਇਨਪੁਟ ਡੇਟਾ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਫਾਰਮ ਡੇਟਾ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜਦੋਂ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਕਤਾ ਗਲਤੀਆਂ ਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
assertSessionHasOldInput() ਇੱਕ PHPUnit ਟੈਸਟਿੰਗ ਵਿਧੀ ਜੋ ਜਾਂਚ ਕਰਦੀ ਹੈ ਕਿ ਸੈਸ਼ਨ ਵਿੱਚ ਪੁਰਾਣਾ ਇਨਪੁਟ ਡੇਟਾ ਉਪਲਬਧ ਹੈ ਜਾਂ ਨਹੀਂ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਫਾਰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲਤਾ ਭਵਿੱਖ ਦੇ ਫਾਰਮ ਸਬਮਿਸ਼ਨ ਕੋਸ਼ਿਸ਼ਾਂ ਲਈ ਉਪਭੋਗਤਾ ਇਨਪੁਟਸ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੁਰੱਖਿਅਤ ਰੱਖਦੀ ਹੈ।
assertSessionHasErrors() ਇੱਕ PHPUnit ਵਿਧੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਫਾਰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਗਲਤੀਆਂ ਮੌਜੂਦ ਹਨ। ਇਹ ਕਮਾਂਡ ਜਾਂਚ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਜੇਕਰ ਬੈਕਐਂਡ ਪ੍ਰਮਾਣਿਕਤਾ ਇੰਪੁੱਟ ਗਲਤੀਆਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਫੜਦੀ ਹੈ ਅਤੇ ਉਪਭੋਗਤਾ ਨੂੰ ਗਲਤੀਆਂ ਵਾਪਸ ਕਰਦੀ ਹੈ।
forEach() JavaScript ਵਿੱਚ, ਇਹ ਵਿਧੀ ਹਰੇਕ ਤੱਤ ਲਈ ਇੱਕ ਐਕਸ਼ਨ ਕਰਨ ਲਈ ਇੱਕ ਐਰੇ ਜਾਂ ਵਸਤੂ ਉੱਤੇ ਲੂਪ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ। ਇੱਥੇ, ਇਸਦੀ ਵਰਤੋਂ ਇਨਾਮ ਡੇਟਾ ਨੂੰ ਦੁਹਰਾਉਣ ਅਤੇ ਇਸਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਫਾਰਮ ਵਿੱਚ ਜੋੜਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
document.querySelectorAll() ਕਿਸੇ ਖਾਸ ਚੋਣਕਾਰ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਸਾਰੇ ਤੱਤ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਇਹ ਗਿਣਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਫਾਰਮ 'ਤੇ ਪਹਿਲਾਂ ਤੋਂ ਕਿੰਨੀਆਂ ਇਨਾਮ ਆਈਟਮਾਂ ਹਨ, ਇਸਲਈ ਨਵੀਂ ਆਈਟਮ ਦਾ ਇੱਕ ਵਿਲੱਖਣ ਸੂਚਕਾਂਕ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ।

ਲਾਰਵੇਲ 10 ਵਿੱਚ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨਾਲ ਗਤੀਸ਼ੀਲ ਫਾਰਮ ਹੈਂਡਲਿੰਗ

ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ, ਮੁੱਖ ਚੁਣੌਤੀ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਨਵੇਂ ਇਨਾਮ ਫਾਰਮ ਖੇਤਰਾਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣ ਦੀ ਯੋਗਤਾ ਦੇ ਨਾਲ ਜੋੜਨਾ ਹੈ Laravel ਵਿੱਚ ਇੱਕ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲਤਾ ਦੇ ਬਾਅਦ. ਆਮ ਤੌਰ 'ਤੇ, ਲਾਰਵੇਲ ਦਾ ਸਹਾਇਕ ਫਾਰਮ ਸਬਮਿਸ਼ਨ ਫੇਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਹਿਲਾਂ ਦਾਖਲ ਕੀਤੇ ਮੁੱਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਪਰ JavaScript ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਤੱਤ ਜੋੜਨ ਵੇਲੇ ਇਹ ਅਕਸਰ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ। ਹੱਲ ਬਲੇਡ ਦੇ ਸੰਯੋਗ ਵਿੱਚ ਹੈ JavaScript ਦੇ ਨਾਲ ਨਿਰਦੇਸ਼, ਪੁਰਾਣੇ ਇਨਪੁਟ ਡੇਟਾ ਨੂੰ ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੇ ਖੇਤਰਾਂ ਵਿੱਚ ਸਿੱਧੇ ਪਾਸ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਫੰਕਸ਼ਨ ਇਸ ਪਹੁੰਚ ਦੀ ਕੁੰਜੀ ਹੈ. ਇਹ ਹਰੇਕ ਇਨਾਮ ਲਈ ਨਵੇਂ ਇਨਪੁਟ ਖੇਤਰਾਂ ਨੂੰ ਜੋੜਨ ਲਈ JavaScript ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਫੀਲਡਾਂ ਨੂੰ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ, ਅਸੀਂ ਜਾਂਚ ਕਰਦੇ ਹਾਂ ਕਿ ਕੀ ਕੋਈ ਪੁਰਾਣੇ ਮੁੱਲ ਵਰਤ ਰਹੇ ਹਨ . ਇਹ PHP ਸਾਈਡ ਤੋਂ ਪੁਰਾਣੇ ਇਨਪੁਟ ਮੁੱਲਾਂ ਨੂੰ JavaScript ਆਬਜੈਕਟ ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਜਿਸਨੂੰ ਫਿਰ ਵਰਤ ਕੇ ਦੁਹਰਾਇਆ ਜਾ ਸਕਦਾ ਹੈ . ਇਹ ਵਿਧੀ ਹਰੇਕ ਇਨਾਮ ਇੰਦਰਾਜ਼ ਨੂੰ ਲੂਪ ਕਰਨ ਅਤੇ ਇਸਦੇ ਸੰਬੰਧਿਤ ਮੁੱਲਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਬਣਾਏ ਗਏ ਫਾਰਮ ਤੱਤਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।

ਸਕ੍ਰਿਪਟ ਵੀ ਵਰਤਦੀ ਹੈ ਵਿਧੀ, ਜੋ ਮੌਜੂਦਾ ਫਾਰਮ ਦੇ ਅਨੁਸਾਰੀ ਇੱਕ ਖਾਸ ਸਥਿਤੀ 'ਤੇ HTML ਸਮੱਗਰੀ ਨੂੰ ਸੰਮਿਲਿਤ ਕਰਦੀ ਹੈ। ਪੰਨੇ ਨੂੰ ਤਾਜ਼ਾ ਕੀਤੇ ਬਿਨਾਂ ਨਵੀਆਂ ਇਨਾਮ ਆਈਟਮਾਂ ਨੂੰ ਜੋੜਨ ਲਈ ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜਦੋਂ ਇੱਕ ਨਵਾਂ ਇਨਾਮ ਜੋੜਦੇ ਹੋ, ਤਾਂ ਸਕ੍ਰਿਪਟ ਢੁਕਵੇਂ ਇਨਪੁਟ ਮੁੱਲਾਂ ਦੇ ਨਾਲ ਇੱਕ ਨਵਾਂ ਫਾਰਮ ਫੀਲਡ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਫਾਰਮ ਕੰਟੇਨਰ ਵਿੱਚ ਜੋੜਦਾ ਹੈ। ਦ ਫੰਕਸ਼ਨ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਜੇਕਰ ਫਾਰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਪਹਿਲਾਂ ਦਾਖਲ ਕੀਤਾ ਡੇਟਾ ਉਪਭੋਗਤਾ ਨੂੰ ਵਾਪਸ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

ਅੰਤ ਵਿੱਚ, ਇਹਨਾਂ ਸਕ੍ਰਿਪਟਾਂ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਿੰਗ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ PHPUnit ਟੈਸਟਾਂ ਵਿੱਚ ਵਰਤੇ ਜਾਂਦੇ ਹਨ ਕਿ ਲਾਰਵੇਲ ਪੁਰਾਣੇ ਇਨਪੁਟ ਡੇਟਾ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਟੋਰ ਕਰਦਾ ਹੈ ਅਤੇ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਇਹ ਟੈਸਟ ਇਸ ਗੱਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹਨ ਕਿ ਡੈਟਾ ਨੂੰ ਇੱਕ ਅਸਫਲ ਪ੍ਰਮਾਣਿਕਤਾ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਡਾਇਨਾਮਿਕ ਫਾਰਮ ਫੀਲਡ ਅਗਲੇ ਫਾਰਮ ਰੀਲੋਡਾਂ 'ਤੇ ਆਪਣੇ ਪਿਛਲੇ ਇਨਪੁਟ ਮੁੱਲਾਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦੇ ਹਨ। JavaScript ਅਤੇ ਬਲੇਡ ਦਾ ਇਹ ਸੁਮੇਲ Laravel ਵਿੱਚ ਗੁੰਝਲਦਾਰ, ਗਤੀਸ਼ੀਲ ਰੂਪਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਵੇਲੇ ਇੱਕ ਸਹਿਜ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।

Laravel 10 ਵਿੱਚ JavaScript ਨਾਲ ਪੁਰਾਣੇ ਇਨਪੁਟ ਮੁੱਲਾਂ ਨੂੰ ਸੰਭਾਲਣਾ

ਹੱਲ 1: ਪੁਰਾਣੇ ਫਾਰਮ ਮੁੱਲਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਬਲੇਡ ਅਤੇ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਨੂੰ ਜੋੜਨਾ

// JavaScript function to dynamically append form fields
function addMoreItem() {
    let rewardCount = document.querySelectorAll('.reward-item').length + 1;
    let rewardData = @json(old('reward'));  // Get old values from Laravel
    let rewardItem = rewardData ? rewardData[rewardCount] : {};  // Default to empty object
    let rewardHtml = `
        <div id="reward-${rewardCount}" class="reward-item">`
            <input type="text" name="reward[${rewardCount}][reward_name]"
                value="{{ old('reward.${rewardCount}.reward_name', rewardItem.reward_name || '') }}" />`
        </div>`;
    document.getElementById('reward_details').insertAdjacentHTML('beforeend', rewardHtml);
}

ਲਾਰਵੇਲ ਬਲੇਡ ਅਤੇ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ

ਹੱਲ 2: ਬਲੇਡ, ਜਾਵਾ ਸਕ੍ਰਿਪਟ, ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਹੈਂਡਲਿੰਗ ਨਾਲ ਪਹੁੰਚ ਨੂੰ ਮਾਡਿਊਲਰਾਈਜ਼ ਕਰਨਾ

// JavaScript function that handles form generation and appends old values if available
function appendRewardItem(key, value) {
    let rewardHtml = `
        <div id="reward-${key}" class="card">`
            <input type="text" name="reward[${key}][reward_name]" class="form-control"
                value="{{ old('reward.' + key + '.reward_name', value.reward_name || '') }}">`
        </div>`;
    document.getElementById('reward_details').insertAdjacentHTML('beforeend', rewardHtml);
}

// Loop through existing rewards and append them
let rewardDetails = @json(old('reward'));
if (rewardDetails) {
    Object.entries(rewardDetails).forEach(([key, value]) => {
        appendRewardItem(key, value);
    });
}

ਲਾਰਵੇਲ ਫਾਰਮਾਂ ਵਿੱਚ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਿੰਗ

ਹੱਲ 3: ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਦੇ ਨਾਲ ਫਾਰਮ ਵਿਹਾਰ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਯੂਨਿਟ ਟੈਸਟਾਂ ਨੂੰ ਜੋੜਨਾ

// PHPUnit test for validating old input values
public function testOldRewardValuesPersist() {
    // Simulate form validation failure
    $response = $this->post('/submit-form', [
        'reward' => [
            '1' => [
                'reward_name' => 'Test Reward 1'
            ]
        ]
    ]);
    $response->assertSessionHasErrors();
    $response->assertSessionHasOldInput('reward');  // Check old input
}

ਬਲੇਡ ਅਤੇ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਨਾਲ ਲਾਰਵੇਲ ਵਿੱਚ ਡਾਇਨਾਮਿਕ ਫਾਰਮ ਹੈਂਡਲਿੰਗ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ

Laravel ਵਿੱਚ, ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਫਾਰਮ ਇਨਪੁਟਸ ਨੂੰ ਸੰਭਾਲਣ ਲਈ, ਖਾਸ ਤੌਰ 'ਤੇ JavaScript ਦੇ ਨਾਲ, ਬਲੇਡ ਅਤੇ JavaScript ਦੇ ਪਰਸਪਰ ਕ੍ਰਿਆਸ਼ੀਲਤਾ ਵੱਲ ਧਿਆਨ ਦੇਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇੱਕ ਮੁੱਖ ਪਹਿਲੂ ਜਿਸ ਨੂੰ ਅਕਸਰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਉਹ ਪ੍ਰਮਾਣਿਕਤਾ ਤਰੁਟੀਆਂ ਹੋਣ ਤੋਂ ਬਾਅਦ ਫਾਰਮ ਡੇਟਾ ਨੂੰ ਕਾਇਮ ਰੱਖਣਾ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਸਹਾਇਕ ਫੰਕਸ਼ਨ, ਲਾਰਵੇਲ ਇਨਪੁਟ ਫੀਲਡਾਂ ਨੂੰ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰਨ ਦਾ ਇੱਕ ਸਿੱਧਾ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਪਰ ਇਸ ਕਾਰਜਸ਼ੀਲਤਾ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਸ਼ਾਮਲ ਕੀਤੇ ਤੱਤਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਵਧੇਰੇ ਵਿਚਾਰਸ਼ੀਲ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਸੱਚ ਹੈ ਜਦੋਂ ਐਰੇ ਜਾਂ ਸੰਗ੍ਰਹਿ, ਜਿਵੇਂ ਕਿ ਇਨਾਮ, ਜਿੱਥੇ ਹਰੇਕ ਆਈਟਮ ਨੂੰ ਆਪਣਾ ਡੇਟਾ ਬਰਕਰਾਰ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਾਲ ਨਜਿੱਠਣ ਵੇਲੇ ਸੱਚ ਹੁੰਦਾ ਹੈ।

ਇਸ ਚੁਣੌਤੀ ਦਾ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੱਲ Laravel's ਨੂੰ ਜੋੜ ਰਿਹਾ ਹੈ JavaScript ਨਾਲ ਨਿਰਦੇਸ਼. ਦ @json() ਡਾਇਰੈਕਟਿਵ ਸਰਵਰ-ਸਾਈਡ ਡੇਟਾ ਨੂੰ ਇੱਕ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਜਿਸਨੂੰ JavaScript ਸਮਝ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨੂੰ ਵਾਪਸ ਫਰੰਟਐਂਡ ਵਿੱਚ ਪਾਸ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹਨਾਂ ਮੁੱਲਾਂ ਨੂੰ ਨਵੇਂ ਸ਼ਾਮਲ ਕੀਤੇ ਫਾਰਮ ਖੇਤਰਾਂ ਵਿੱਚ ਮੈਪ ਕਰਕੇ, ਤੁਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾ ਸਕਦੇ ਹੋ ਕਿ ਜੇਕਰ ਕੋਈ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲਤਾ ਵਾਪਰਦੀ ਹੈ ਤਾਂ ਉਪਭੋਗਤਾ ਆਪਣੀ ਤਰੱਕੀ ਨੂੰ ਨਹੀਂ ਗੁਆਉਂਦੇ। ਇਹ ਤਕਨੀਕ ਬਲੇਡ ਦੀ ਟੈਂਪਲੇਟ ਰੈਂਡਰਿੰਗ ਸ਼ਕਤੀ ਦਾ ਲਾਭ ਉਠਾਉਂਦੀ ਹੈ ਜਦੋਂ ਕਿ JavaScript-ਅਧਾਰਿਤ ਫਾਰਮ ਪ੍ਰਬੰਧਨ ਦੀ ਲਚਕਤਾ ਦੀ ਵੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।

ਸਿਰਫ਼ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨੂੰ ਬਹਾਲ ਕਰਨ ਤੋਂ ਇਲਾਵਾ, ਗਲਤੀ ਸੰਭਾਲਣ ਅਤੇ ਇਨਪੁਟ ਪ੍ਰਮਾਣਿਕਤਾ 'ਤੇ ਵਿਚਾਰ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਸ ਦੇ ਨਾਲ , Laravel ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਖਾਸ ਖੇਤਰਾਂ ਦੇ ਅੱਗੇ ਪ੍ਰਮਾਣਿਕਤਾ ਸੁਨੇਹਿਆਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ, ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਇਹ ਸਮਝਣਾ ਸੌਖਾ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕੀ ਗਲਤ ਹੋਇਆ ਹੈ। ਦੋਵਾਂ ਕਮਾਂਡਾਂ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨਾ ਇੱਕ ਸਹਿਜ ਅਨੁਭਵ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਜਦੋਂ ਫਾਰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦੇ ਹਨ ਅਤੇ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਇਨਪੁਟਸ ਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਬਲੇਡ ਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ JavaScript ਦੀ ਲਚਕਤਾ ਨਾਲ ਜੋੜ ਕੇ, ਤੁਸੀਂ ਆਪਣੇ Laravel ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਇੱਕ ਗਤੀਸ਼ੀਲ ਪਰ ਸਥਿਰ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨੂੰ ਕਾਇਮ ਰੱਖ ਸਕਦੇ ਹੋ।

  1. ਪ੍ਰਮਾਣਿਕਤਾ ਫੇਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਮੈਂ ਲਾਰਵੇਲ ਵਿੱਚ ਫਾਰਮ ਡੇਟਾ ਨੂੰ ਕਿਵੇਂ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰਾਂ?
  2. ਤੁਸੀਂ ਵਰਤ ਸਕਦੇ ਹੋ ਪ੍ਰਮਾਣਿਕਤਾ ਫੇਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਹਿਲਾਂ ਦਰਜ ਕੀਤੇ ਮੁੱਲਾਂ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਬਲੇਡ ਟੈਂਪਲੇਟਸ ਵਿੱਚ ਫੰਕਸ਼ਨ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਟੈਕਸਟ ਇੰਪੁੱਟ ਨੂੰ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
  3. ਮੈਂ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੇ ਫਾਰਮ ਖੇਤਰਾਂ ਵਿੱਚ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
  4. JavaScript ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਖੇਤਰਾਂ ਵਿੱਚ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ, ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੁਰਾਣੇ ਡੇਟਾ ਨੂੰ ਪਾਸ ਕਰੋ ਡਾਇਰੈਕਟਿਵ ਅਤੇ ਫਿਰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਇਸਨੂੰ ਫਾਰਮ ਵਿੱਚ ਪਾਓ। ਉਦਾਹਰਨ ਲਈ, ਵਰਤੋ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨੂੰ JavaScript ਵਿੱਚ ਪਾਸ ਕਰਨ ਲਈ ਅਤੇ ਫਿਰ ਉਹਨਾਂ ਨੂੰ ਫਾਰਮ ਫੀਲਡ ਵਿੱਚ ਜੋੜਨਾ।
  5. ਮੇਰੀ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਬਲੇਡ ਸੰਟੈਕਸ ਨੂੰ ਕਿਉਂ ਨਹੀਂ ਪਛਾਣ ਰਹੀ ਹੈ?
  6. JavaScript ਬਲੇਡ ਸੰਟੈਕਸ ਦੀ ਸਿੱਧੀ ਵਿਆਖਿਆ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ ਇਹ ਕਲਾਇੰਟ ਸਾਈਡ 'ਤੇ ਚੱਲਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਬਲੇਡ ਸਰਵਰ 'ਤੇ ਰੈਂਡਰ ਹੁੰਦਾ ਹੈ। ਬਲੇਡ ਵੇਰੀਏਬਲ ਨੂੰ JavaScript ਵਿੱਚ ਪਾਸ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ PHP ਵੇਰੀਏਬਲ ਨੂੰ ਇੱਕ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲਣ ਲਈ JavaScript ਪੜ੍ਹ ਸਕਦਾ ਹੈ।
  7. ਮੈਂ ਗਤੀਸ਼ੀਲ ਰੂਪਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲ ਸਕਦਾ ਹਾਂ?
  8. ਫਾਰਮ ਡੇਟਾ ਨੂੰ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰਨ ਤੋਂ ਇਲਾਵਾ, ਲਾਰਵੇਲ ਦੀ ਵਰਤੋਂ ਕਰੋ ਇਨਪੁਟ ਖੇਤਰਾਂ ਦੇ ਅੱਗੇ ਪ੍ਰਮਾਣਿਕਤਾ ਸੁਨੇਹਿਆਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਨਿਰਦੇਸ਼. ਇਹ ਪ੍ਰਮਾਣਿਕਤਾ ਫੇਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕਿਸੇ ਵੀ ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰਨ ਵਿੱਚ ਉਪਭੋਗਤਾ ਨੂੰ ਮਾਰਗਦਰਸ਼ਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।
  9. ਲਾਰਵੇਲ ਵਿੱਚ ਡਾਇਨਾਮਿਕ ਫਾਰਮ ਇਨਪੁਟਸ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਕੀ ਹੈ?
  10. ਸਭ ਤੋਂ ਵਧੀਆ ਪਹੁੰਚ ਹੈ ਬਲੇਡ ਦੀ ਟੈਂਪਲੇਟ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਡਾਇਨਾਮਿਕ ਫੀਲਡ ਜਨਰੇਸ਼ਨ ਲਈ JavaScript ਨਾਲ ਜੋੜਨਾ। ਵਰਤੋ ਨਵੇਂ ਫਾਰਮ ਖੇਤਰਾਂ ਨੂੰ ਜੋੜਨ ਲਈ JavaScript ਵਿੱਚ ਅਤੇ ਪਿਛਲੇ ਮੁੱਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਬਲੇਡ ਵਿੱਚ.

Laravel 10 ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਰੂਪਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ Blade ਦੇ ਪੁਰਾਣੇ() ਸਹਾਇਕ ਅਤੇ JavaScript ਦੇ ਇੱਕ ਸਮਾਰਟ ਮਿਸ਼ਰਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਸੁਮੇਲ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲਤਾਵਾਂ ਤੋਂ ਬਾਅਦ ਉਪਭੋਗਤਾ ਡੇਟਾ ਗੁੰਮ ਨਹੀਂ ਹੁੰਦਾ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੇ ਖੇਤਰਾਂ ਨਾਲ ਕੰਮ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

ਫਾਰਮ ਫੀਲਡਾਂ ਅਤੇ Laravel ਦੇ ਬਿਲਟ-ਇਨ ਤਰੀਕਿਆਂ ਜਿਵੇਂ old() ਅਤੇ @json() ਨੂੰ ਜੋੜਨ ਲਈ JavaScript ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਇੱਕ ਨਿਰਵਿਘਨ, ਉਪਭੋਗਤਾ-ਅਨੁਕੂਲ ਅਨੁਭਵ ਬਣਾ ਸਕਦੇ ਹੋ। ਸਹੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਗਲਤੀ ਨਾਲ ਨਜਿੱਠਣਾ ਫਾਰਮ ਜਮ੍ਹਾਂ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਹੋਰ ਵਧਾਉਂਦਾ ਹੈ।

  1. ਇਹ ਲੇਖ ਹੈਂਡਲਿੰਗ 'ਤੇ ਅਧਿਕਾਰਤ ਲਾਰਵੇਲ ਦਸਤਾਵੇਜ਼ਾਂ ਦਾ ਹਵਾਲਾ ਦਿੰਦਾ ਹੈ ਫਾਰਮ ਇਨਪੁਟਸ ਅਤੇ ਡਾਇਨਾਮਿਕ ਡੇਟਾ ਦੇ ਨਾਲ ਕੰਮ ਕਰਨਾ . ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, Laravel ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ਾਂ 'ਤੇ ਜਾਓ ਲਾਰਵੇਲ ਬਲੇਡ ਦਸਤਾਵੇਜ਼ .
  2. ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਵਿਧੀਆਂ ਜਿਵੇਂ ਕਿ ਅਤੇ ਇਸ ਗਾਈਡ ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਫਾਰਮ ਖੇਤਰਾਂ ਨੂੰ ਜੋੜਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹਨ। ਮੋਜ਼ੀਲਾ ਡਿਵੈਲਪਰ ਨੈੱਟਵਰਕ (MDN) 'ਤੇ ਜਾ ਕੇ ਇਹਨਾਂ ਫੰਕਸ਼ਨਾਂ ਬਾਰੇ ਹੋਰ ਜਾਣੋ MDN ਵੈੱਬ ਡੌਕਸ: Object.entries() .
  3. ਫਾਰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਗਲਤੀ ਨਾਲ ਨਜਿੱਠਣ ਦੇ ਵਧੀਆ ਅਭਿਆਸਾਂ ਲਈ ਲਾਰਵੇਲ ਵਿੱਚ ਟੈਸਟ, ਇਹ ਲੇਖ ਲਾਰਵੇਲ ਦੇ ਟੈਸਟਿੰਗ ਦਸਤਾਵੇਜ਼ਾਂ ਤੋਂ ਸੂਝ 'ਤੇ ਖਿੱਚਿਆ ਗਿਆ ਹੈ। ਹੋਰ ਪੜ੍ਹਨ ਲਈ, ਵੇਖੋ ਲਾਰਵੇਲ ਟੈਸਟਿੰਗ ਦਸਤਾਵੇਜ਼ .